Feanor06
Messages postés34Date d'inscriptionjeudi 18 février 2010StatutMembreDernière intervention23 juillet 2010
-
15 avril 2010 à 09:19
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
15 avril 2010 à 10:58
Bonjour,
J'apppelle une fonction d'une DLL C++ écrite avec Dev-C++ sous Visual Basic 2008 (vb.net).
J'utilise une déclaration du type :
extern "C" __declspec (dllexport) __stdcall Machin MaFonction()
Et dans l'exe :
Declare Function MaFonction Lib "DLL.dll" () As Machin
Aucun problème, tout fonctionne parfaitement.
Par contre, je dois changer de compilateur C++ et passer sous CodeBlocks (pas le choix...).
Et la, c'est le drame... plus rien ne fonctionne...
Le point d'entrée de ma fonction n'est pas identifié (EntryPointNotFoundException).
J'ai pensé linker le .a au projet, bien qu'il me semble que le Declare Function remplace ce "linkage", mais je ne voit même pas comment faire (pas d'ajout de fichier .a ni .def dans VB 2008).
J'ai également modifié ma déclaration comme ceci pour définir un point d'entrée... mais rien n'y fait :
<DllImport("DLL.dll", EntryPoint:="DLLIMPORT1")> _
Private Shared Function MaFonction() As Machin
End Function
Feanor06
Messages postés34Date d'inscriptionjeudi 18 février 2010StatutMembreDernière intervention23 juillet 2010 15 avril 2010 à 10:47
Oui, toujours...
Le plus fou c'est que CodeBlocks prends en compte l'export des projets Dev-C++.
C'est donc ce que je fais, pas de modif de code, je compile en Release, j'ai vérifié chaque option de compilation...
Et bam : EntryPointNotFoundException
Petite différence de taille tout de même :
DLL Dev-C++ : 16ko
DLL CodeBlocks : 7ko
Dev-C++ embarque t'il des infos précieuses au projet et pas CodeBlocks...???