How to call C++ DLL in C#
c#, dll
Solution
The following code in VS 2012 worked fine:
#include <Windows.h>
extern "C"
{
__declspec(dllexport) void HelloWorld ()
{
MessageBox (0, L"Hello World from DLL!\n", L"Hi",MB_ICONINFORMATION);
}
__declspec(dllexport) void ShowMe()
{
MessageBox (0, L"How are u?", L"Hi", MB_ICONINFORMATION);
}
}
NOTE: If I remove the `extern "C"` I get exception.
Problem
I have written a DLL in dev C++. The DLL's name is "DllMain.dll" and it contains two functions: `HelloWorld` and `ShowMe`. The header file looks like this: ``` DLLIMPORT void HelloWorld(); DLLIMPORT void ShowMe(); ``` And the source file looks like this: ``` DLLIMPORT void HelloWorld () { MessageBox (0, "Hello World from DLL!\n", "Hi",MB_ICONINFORMATION); } DLLIMPORT void ShowMe() { MessageBox (0, "How are u?", "Hi", MB_ICONINFORMATION); } ``` I compile the code into a DLL and call the two functions from C#. The C# code looks like this: ``` [DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)] public static extern void HelloWorld(); [DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)] public static extern void ShowMe(); ``` When I call the function "HelloWorld" it runs well and pops up a messageBox, but when I call the function `ShowMe` an `EntryPointNotFoundException` occurs. How do I avoid this exception? Do I need to add `extern "C"` in the header file?