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.

Était-ce utile?

La solution

C'était à cause d'un problème de liaison reliant les différents dossiers contenant les mêmes fichiers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top