Gros problème avec DllImport : EntryPointNotFound

Résolu
kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008 - 23 mai 2005 à 17:32
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 24 mai 2005 à 17:48
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 mai 2005 à 20:41
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#
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
23 mai 2005 à 21:16
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"
0
kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008
24 mai 2005 à 10:53
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
24 mai 2005 à 17:48
Tu peux essayer ca:

#define DYNAMIC extern "C" __declspec( dllexport )

DYNAMIC void MyFunc( )
{

}

Devrait plus y'avoir de probleme de compilation.
0
Rejoignez-nous