Comment appeler des DLL C++ en C#

J'ai écrit une DLL dans dev C++. La DLL est le nom de "DllMain.dll" et il contient deux fonctions: HelloWorld et ShowMe. L'en-tête de fichier ressemble à ceci:

DLLIMPORT  void HelloWorld();
DLLIMPORT void ShowMe();

Et la source du fichier ressemble à ceci:

DLLIMPORT void HelloWorld ()
{
  MessageBox (0, "Hello World from DLL!\n", "Hi",MB_ICONINFORMATION);
}

DLLIMPORT void ShowMe()
{
 MessageBox (0, "How are u?", "Hi", MB_ICONINFORMATION);
}

Je compile le code dans une DLL et appeler les deux fonctions de C#. Le C# code ressemble à ceci:

[DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void HelloWorld();

[DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void ShowMe();

Lorsque j'appelle la fonction "HelloWorld" il fonctionne bien et affiche une messageBox, mais quand j'appelle la fonction ShowMe un EntryPointNotFoundException se produit. Comment puis-je éviter cette exception? Ai-je besoin d'ajouter extern "C" dans le fichier d'en-tête?

  • Pouvez-vous s'il vous plaît poster votre code C++?
  • Vous devrez probablement changer de la convention d'appel pour CallingConvention.StdCall.
InformationsquelleAutor user1333098 | 2013-05-02