Eh bien je n'ai pas fini d'en baver avec le C++/CLI !!
Au programme d'aujourd'hui : j'ai un paquet de fonctions (pas de namespace, pas d'objet, juste des fonctions à la Pascal) en C++ non managé. Ces fonctions sont regroupées dans une DLL (que j'ai compilée en /clr) et je souhaite utiliser l'une de ces fonctions à partir d'un code managé (lui aussi compilé en /clr).
Ma fonction est définie classiquement ainsi :
__declspec(dllimport) youpi()
lorsqu'elle est compilée par mon application externe.
Bref, j'ai une fonction signée "__cdecl" appelée par une fonction signée "__clrcall"...
J'imagine que ça ne va pas sans un minimum de précautions, car j'ai un problème lors de l'édition de liens : la fonction n'est pas retrouvée !
Pourtant, la DLL en question est bien trouvée (j'ai ajouté la ligne #using "ZUT.dll" en début de mon code managé) et elle est accompagnée de plusieurs fichiers auxiliaires (.exp, .ilk, .lib, .pdb). En jetant un coup d'oeil dans le ZUT.exp, je vois apparaître ma fonction "youpi" au milieu d'un tas de binaire, elle semble donc bien être exportée par la DLL...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 NuMatrix.obj : error LNK2028: unresolved token (0A000058) "bool __cdecl youpi(void)" (?youpi@@$$FYA_NXZ) referenced in function "public: bool __clrcall NuDataStruct::NuMatrix::evd(class NuDataStruct::NuMatrix ^,class NuDataStruct::NuMatrix ^)" (?evd@NuMatrix@NuDataStruct@@$$FQ$AAM_NP$AAV12@0@Z) NuMatrix.obj : error LNK2019: unresolved external symbol "bool __cdecl youpi(void)" (?youpi@@$$FYA_NXZ) referenced in function "public: bool __clrcall NuDataStruct::NuMatrix::evd(class NuDataStruct::NuMatrix ^,class NuDataStruct::NuMatrix ^)" (?evd@NuMatrix@NuDataStruct@@$$FQ$AAM_NP$AAV12@0@Z)
J'ai trouvé sur le net des erreurs similaires sans vraiment comprendre les solutions proposées...
Je sens encore la bonne vieille erreur de débutant, et je remercie toute bonne âme de me mettre le nez dedans !!
Partager