Je souhaite faire une dll, en C++, avec VC++6.0 (+entreprise edition+visual fortran 6.1.0) et pouvoir utiliser les objets définis dans la dll avec une application.
J'ai bien noté dans :
http://c.developpez.com/faq/vc/?page...keDLLExtension
Comment faire une DLL d’extensions ?
Une DLL d’extensions permet l’export de classes complètes que le client peut instancier et même dériver.
Note : L’utilisation d’une DLL d’extensions impose l’utilisation des MFC en DLL partagées.
Mais voila je souhaiterais éviter d'utiliser MFC pour être au maximum portable.
Mon visual studio pour un nouveau projet me propose Win32 Dynamic-Link Library,
et je peux choisir A dll that exports some symbols
Si j'appelle mon projet dll2
dans le fichier dll2.h j'ai :
Tout se compile bien, et se link bien avec l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // This class is exported from the dll2.dll class DLL2_API CDll2 { public: CDll2(void); // TODO: add your methods here. };
Si maintenant j'ajoute une méthode testout et une variable itest:
dans dll.h:
dans dll2.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // This class is exported from the dll2.dll class DLL2_API CDll2 { public: CDll2(void); // TODO: add your methods here. int testout(); private: int itest; };
Tout se compile bien, et se link bien avec l'application (Win32 console application) en faisant l'include qui va bien et en ajoutant le dll2.lib aux librairies.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int CDll2::testout() { return(itest); }
Voici mon application:
Par contre dès que j'appelle la methode,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main(int argc, char* argv[]) { DLL2_API CDll2 Objet1; return 0; }
Je n'arrive pas à me débarrasser de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int main(int argc, char* argv[]) { DLL2_API CDll2 Objet1; Objet1.testout(); return 0; }
error LNK2001: unresolved external symbol "__declspec(dllimport) class CDll2 Objet1
Dois-je me resoudre à passer les infos par des fonctions en C?
Ce qui me semble curieux c'est qu'avec Win32 Dynamic-Link Library Visual me propose bien une classe, mais que je n'aurais pas le droit d'utiliser!!!
Ou alors j'ai loupé un concept!
Merci d'avance pour votre aimable aide.
Partager