symbole non resolu au link d'une dll - C++ - Programmation
MarshPosté le 22-11-2006 à 10:37:00
J'ai un petit problème de résolution de symbole au link avec une dll. Je vais essayer de donner tous les éléments:
Je compile sous visual C++ .net 2003
Le symbole pour lequel j'ai un problème est un attribut (m_TypeList) static d'une classe (non template). Cet attribut est une liste (template). Je l'ai bien définit dans le .cpp. La compilation et le link de ma dll se passe sans problème Jobtiens ma dll et le .lib correspondant.
Pour le programme qui utilise la dll, la compilation se passe bien mais au link -> unresolved symbol ?m_TypeList@vrBuiltIn@@2V?$vrRefCountList@PAVvrRuntimeClass@@@@A Cest le seul symbole qui plante Jai fait un Dumpbin de mon .lib et le symbole est présent !!!
Bref, ca ne marche pas, ce nest pas cool.
Je ne sais pas trop si c'est une option de compilation qui manque, si c'est lié au fait que ce soit statique.
Certain auront peut-être vu que mon symbole contient le mot RuntimeClass. C'est en effet inclus dans un mécanisme similaire aux CRuntimeClass qui permet a un objet d'accéder au runtime a des info de la classe. Mon attribut maudit est la liste dans laquelle se stockent les différentes classes. Le mécanisme veut que dans chaque cpp, il y ait une macro d'implémentation qui implémente 2-3 fonctions lié a la classe et l'ajoute a la liste
Donc mon autre interrogation est : le fait que l'on y accède d'un peu partout (au chargement de la dll et avant tout appel de méthode) alors qu'elle n'est instanciée que dans le runtimeClass.cpp embêterait-il C++?
ps: j'arrive a faire tourner sans problème le bousin sur linux et sous VC++ 6.0
Merci d'avance pour vos précieux conseil (parce que la je commence a être a cours d'idée)
Marsh Posté le 22-11-2006 à 10:37:00
J'ai un petit problème de résolution de symbole au link avec une dll.
Je vais essayer de donner tous les éléments:
Je compile sous visual C++ .net 2003
Le symbole pour lequel j'ai un problème est un attribut (m_TypeList) static d'une classe (non template). Cet attribut est une liste (template).
Je l'ai bien définit dans le .cpp.
La compilation et le link de ma dll se passe sans problème
Jobtiens ma dll et le .lib correspondant.
Pour le programme qui utilise la dll, la compilation se passe bien mais au link -> unresolved symbol
?m_TypeList@vrBuiltIn@@2V?$vrRefCountList@PAVvrRuntimeClass@@@@A
Cest le seul symbole qui plante
Jai fait un Dumpbin de mon .lib et le symbole est présent !!!
Bref, ca ne marche pas, ce nest pas cool.
Je ne sais pas trop si c'est une option de compilation qui manque,
si c'est lié au fait que ce soit statique.
Certain auront peut-être vu que mon symbole contient le mot RuntimeClass.
C'est en effet inclus dans un mécanisme similaire aux CRuntimeClass qui permet a un objet d'accéder au runtime a des info de la classe.
Mon attribut maudit est la liste dans laquelle se stockent les différentes classes.
Le mécanisme veut que dans chaque cpp, il y ait une macro d'implémentation qui implémente 2-3 fonctions lié a la classe et l'ajoute a la liste
Donc mon autre interrogation est : le fait que l'on y accède d'un peu partout (au chargement de la dll et avant tout appel de méthode) alors qu'elle n'est instanciée que dans le runtimeClass.cpp embêterait-il C++?
ps: j'arrive a faire tourner sans problème le bousin sur linux et sous VC++ 6.0
Merci d'avance pour vos précieux conseil (parce que la je commence a être a cours d'idée)