2009-10-10 3 views
3

Je rencontre des problèmes pour lier un programme sous Windows avec VC2008 SP1. Je spécialise explicitement une fonction de membre de modèle dans une DLL, qui apparaît correctement comme un symbole exporté dans un walker de dépendances, pour le type correct, et avec les arguments corrects. Lorsque j'essaie d'appeler le symbole d'un .exe, l'éditeur de liens se plaint qu'il ne peut pas résoudre le symbole (bien qu'il compile l'objet ok), mais le nom décoré du symbole dit qu'il ne peut pas La résolution correspond exactement au nom décoré du symbole exporté dans ma DLL (tel que vu avec le séparateur de dépendances). Le problème se produit uniquement pour les fonctions de membre de modèle exportées explicitement spécialisées. Si je commente les appels à ceux-ci, toutes les autres classes de fonctions exportées lieront ok, ainsi le fichier .lib a l'air d'être généré correctement.C++ - Importation de modèles explicitement spécialisés sous Windows

J'ai essayé de modifier ma déclaration de la fonction de modèle dans les en-têtes pour inclure la directive 'extern', et elle a correctement spécifié __declspec (dllimport), mais cela ne fait aucune différence.

Toutes les idées ont été appréciées. Merci.

+0

Je veux juste éclaircir ce que vous voulez dire par "se spécialiser explicitement". Il y a une chose telle que l'instanciation explicite qui est une chose différente de la spécialisation. Parlez-vous ici d'une instanciation explicite ou voulez-vous dire que vous êtes en train de spécialiser le membre? – Troubadour

+0

désolé, je voulais dire l'instanciation explicite (dans le .cpp) de certaines spécialisations de fonctions membres particulières. par ex. dans le fichier C++: template LIB_API_EXPIMP void NomClasse :: memberFnName (const int a, const int b, signe unsigned char * c) const; – kdmiller

Répondre

5

Enfin réussi à aller au fond de cette - il a été causé par un .lib qui n'a pas été enregistré pour correspondre à la DLL du contrôle de la source - peut-être construit avec une version différente du compilateur. Désolé pour une perte de temps. ... si tout le reste échoue, essayez de reconstruire les dépendances de votre bibliothèque.

+0

Vous savez, j'ai dormi dessus, et quand je me suis levé ce matin, ce genre de chose était la conclusion qui me restait. lol! Merci de nous en informer. – Troubadour

Questions connexes