LNK 2028 - 2019 / gérés et non gérés C ++? (VS 2008)
-
01-10-2019 - |
Question
Je suis en train de lier une bibliothèque open-source à l'un de mon projet. La bibliothèque est non géré (du nom Tetgen) et mon projet est géré C ++.
Mon projet reconnaît l'en-tête et peut utiliser les fonctions qui y sont définies. Mais je reçois une erreur 2028 chaque fois qu'il veut accéder à certaines méthodes définies dans le Cpp:
LNK2028 d'erreur: jeton non résolu (0A000E20) "public: void __thiscall tetgenio :: save_nodes (char const *)" (save_nodes @ tetgenio @@ $$ FQAEXPBD @ Z?) Référencé dans la fonction « publique: bool virtuelle __thiscall ForwardModelingPlugin: : CustomMeshVol3D :: tesselate (void) »(? tesselate @ CustomMeshVol3D @ ForwardModelingPlugin @@ $$ FUAE_NXZ)
J'ai essayé de créer une fonction de test:
int tetgenio::Test(int i) {
return i;
}
... et une autre fonction Testbis, définie dans l'en-tête. Testbis œuvres, test donne une erreur 2028.
Je l'ai comparé l'obj de mon projet et le .lib créé, et pour la lib il y a:
save_nodes@tetgenio@@QAEXPAD@Z
Mais dans le obj est:
save_nodes@tetgenio@@$$FQAEXPBD@Z in the .obj
Il semble qu'ils ne sont pas les mêmes.
Tout est compilé avec / clr. Je l'ai essayé de créer à la fois un .lib et .dll, avec les mêmes résultats ou l'autre manière.
La solution
C'était à cause d'un problème de liaison reliant les différents dossiers contenant les mêmes fichiers.