Gros problème avec DllImport : EntryPointNotFound [Résolu]

Signaler
Messages postés
26
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
6 janvier 2008
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Coucou,



En fait, je dois utiliser une fonction qui se trouve dans un programme
en C. Cette fonction en appelle d'autres (libtiff) et j'ai donc créer
un projet C++->Dll où je met le programme en C et toutes ses
dépendances.

La fonction utile étant un Main, j'ai repris le code de celui-ci et j'ai donc créer une fonction que voici :



dans tif2bsb.c :

extern int tiffbsb (const char* fileTemp, const char* inputChart, const char* outputChart)

{

}

dans bsb.h :

extern int tiffbsb(const char *fileTemp, const char *inputChart, const char *outputChar);



Ma Dll se nomme tiffBSB et je l'appelle dans mon prog avec :

[DllImport("tiffBSB.dll")]

private static
extern int tiffbsb(string fileTemp, string inputChart, string
outputChart);



ensuite, lorsque je l'execute dans une méthode, j'obtiens cette excepetion :



An unhandled exception of type 'System.EntryPointNotFoundException' occurred in RasterChart2BSB.exe



Additional information: Unable to find an entry point named tiffbsb in DLL tiffBSB.dll.


J'ai essayé de avec [DllImport("tiffBSB.dll", EntryPoint=tiffbsb] mais j'obtiens le même résultat.

Si vous aveez une idée pour m'aider...


Have a nice day



Bibax en fait un max

4 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Sert toi de l'outil DUMPBIN sur ta dll pour vérifier que l'export est bel et bien fait, ainsi que vérifier que le nom soit bon.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Les fonctions linkees en C++ ont une decoration, si tu possedes le code source tu peux eviter cette decoration, je crois que ca se fait avec le mot cle extern "C". Sinon en C# tu peux utiliser EntryPoint avec un numero de fonction: EntryPoint = "#1"
Messages postés
26
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
6 janvier 2008

Coucou,



Grâce à dumpbin, j'ai réussi à me servir de ma dll.

J'ai un peu galérépour m'en servir, mais il y a une petite manip à faire expliquée ici.



Je n'ai pas essayé ta réponse Lutinore car j'avais essayé de mettre :

extern "C" int ... => mais problème de compilation.

Merci quand même.


Have a nice day



Bibax en fait un max
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Tu peux essayer ca:

#define DYNAMIC extern "C" __declspec( dllexport )

DYNAMIC void MyFunc( )
{

}

Devrait plus y'avoir de probleme de compilation.