Je suis d�butant en C++/CLI et je bloque sur un probl�me... Je vais tenter de l'expliquer le plus clairement possible :
J'ai cr�� deux DLL C++/CLI :
La premi�re (A) est utilis�e par la seconde (B).
"A" d�finit quelques classes abstraites, et quelques classes concr�tes (toutes manag�es).
"B" d�finit uniquement des classes concr�tes (manag�es �galement) qui h�ritent des classes abstraites d�finies dans "A". Notez que toutes les classes d�finies dans "A" sont import�es quelque part dans "B".
Toutes les classes concr�tes d�finies dans A et B servent � wrapper des objets natifs C++ (pour y acc�der depuis du C#) qui sont d�finis dans d'autres DLL (natives, mais compil�es avec /clr, comme A et B).
Je compile bien mes DLL, je les r�f�rence dans le C#, et c'est l� que le probl�me apparait :
Dans l'explorateur d'objets, ma DLL "A" est vide, et ma DLL "B" contient tous les objets de "A" et "B" r�unis.
Apr�s r�flexion, j'ai trouv� ca (� peu pr�s) normal �tant donn� que "A" ne contient aucun ".cpp" ; uniquement des ".h" ; et que "B" inclut tout "A"...
Je me suis alors dit qu'en mettant des .cpp dans "A" ca changerait le probl�me.
En effet, j'ai simplement rajout� dans "A" un fichier ".cpp" qui contenait uniquement l'include du fichier ".h" correspondant (pas de code).
R�sultat dans l'explorateur d'objets : "B" contient toujours TOUT, mais "A" contient maintenant ses propres classes. Du coup, le projet C# ne compile m�me plus, vu qu'il a des classes d�finies dans les deux DLLs !
Enfin, j'ai essay� de mettre le code d'une m�thode dans le fichier ".cpp" ajout� dans "A".. Et l�, probl�me de link ("B" ne trouve pas le symbole de la m�thode en question). Or "A" ne me g�n�re pas de fichier .lib (je ne connais pas bien le conditions sous lesquelles un .lib est g�n�r� avec une DLL). Donc je ne sais pas comment linker correctement dans ce cas l�...
Si vous avez la moindre id�e qui pourrait m'�tre utile, ca m'interesse
Merci d'avance![]()
Partager