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