[CF][C#/C++] Pourquoi une Missing Methode Exception sur DllImport ?
Salut me revoilà avec mes problem de telephone...
Je cherche ç utiliser des dll C++ dans mon code C# => plateforme invoke
J'ai une dll simpel en C++.
le cpp
Code:
1 2 3 4 5 6 7 8
|
#include "MyDll.h"
// This is an example of an exported function.
MYDLL_API int fnMyDll()
{
return 42;
} |
et le .h
Code:
1 2 3 4 5 6 7 8
|
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
MYDLL_API int fnMyDll(); |
Avec ça j'ecri un wrapper pour pouvoir recuperer le 42 de la fonction de ma dll.
Code:
1 2 3 4 5 6 7 8
|
[DllImport("MyDll.dll",EntryPoint="fnMyDll",CharSet=CharSet.Unicode)]
private static extern int fnMyDll();
int GetInt()
{
return fnMyDll();
} |
en en utilisant ma fonction je leve une exception : Missing Methode Exception c'est balaud il trouva pas fnMyDll() !
Je n'ai rien rajouter dans les options du linker du projet C# (dll import doit ce demerdé tout seul je suppose) mais alors pourquoi j'ai cette exception ??
EDIT : Ma dll et l'exe sont au meme endroit
Humm la reponse est surement la...
Il va falloir bien lire ce truc :
http://www.microsoft.com/france/msdn...ime-netcf.html
En gros il faut respecter les conventions !! :D
Code:
1 2 3 4 5 6 7 8 9 10 11
|
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
extern "C"
{
MYDLL_API int fnMyDll();
} |
Il ne faut pas oublier extern "C"