Paum� dans la cr�ation et l'utilisation de DLLs
Bonjour,
Je voudrais mettre au point une structure de d�veloppement sur laquelle je me casse les dents depuis deux jours. Je ne sais pas r�soudre entre autres les divers probl�mes de link ijw/clr/pure/pas pure (c'est une horreur)
Voici :
J'ai une base de code en C++ standard, agr�ment� parfois de quelques utilisations de classes C++/CLI (system::string^, etc.). Je voudrais en faire une DLL utilisable dans d'autres projets (disons core.lib/core.dll; un jour il faudra que je comprenne pourquoi la g�n�ration d'une dll produit aussi un .lib)
J'ai un projet ("solution" en visual) consitu�e de deux sous-projets
-la red�finition d'un contr�le utilisateur (UIControl)
-le programme principal
Ces deux projets ont besoin du code de core.dll
Initialement, �a marchait bien :
La dll �tait compil�e en CLR (ni pure ni safe), d�cor�e des divers declspec(dllexport)
Le contr�le utilisateur �tait aussi en CLR (ni pure ni safe) et importait les headers en rempla�ant les dllexport par dllimport, linkant avec core.lib, et utilisant #using core.dll (merci au tuto de nico-pyright)
Le programme principal faisait de m�me
Et puis un jour, le designer du programme principal s'est mis � ne plus reconna�tre le contr�le utilisateur. Ce n'est pas faute d'avoir reg�n�r� le projet, refait l'importation du contr�le dans la bo�te � outil... rien � faire. Et puis finalement, en supprimant le contr�le de la bo�te � outil pour le r�importer ensuite, je suis retomb� sur l'erreur de chargement HRESULT machin qui apparemment vient du fait que mon usercontrol.dll n'est pas clr:pure
J'ai donc d�cid� de refaire un peu �a.
-Pour une raison que je ne m'explique pas, core.dll compile tr�s bien en clr:pure (je croyais que le C++ et les pointeurs l'en emp�cheraient). Au passage, j'ai d� supprimer les declspec(dllexport).
-De m�me, mon usercontrol compile en clr:pure (en virant les dllimport des headers)
-par contre, �a ne linke plus. Un obscur lnk2001 sur 5 ou 6 fonctions de ma dll l'en emp�che. Il n'y a aucune raison pour �a, ces fonctions sont banales, et je n'ai pas dupliqu� les d�clarations dans diff�rents headers, donc pas d'incoh�rence possible.
-En fouillant le net, il para�t qu'il faut rajouter msvcmrt.lib, mais dans ce cas, �a n'essaye m�me pas de linker (mscvcmrt.lib est en ijw, incompatible clr:pure).
J'ai essay� des tas de configurations pure/pas pure, rien n'y fait, je n'y arrive pas.
Quelqu'un aurait-il des lumi�res ?
Merci
+
Chacha