How do I solve the .NET CF exception "Can't find PInvoke DLL"?

Posted by Ignas Limanauskas on Stack Overflow See other posts from Stack Overflow or by Ignas Limanauskas
Published on 2008-11-26T07:14:59Z Indexed on 2010/06/17 10:33 UTC
Read the original article Hit count: 222

Filed under:
|
|
|

This is to all the C# gurus. I have been banging my head on this for some time already, tried all kinds of advice on the net with no avail. The action is happening in Windows Mobile 5.0.

I have a DLL named MyDll.dll. In the MyDll.h I have:

extern "C" __declspec(dllexport) int MyDllFunction(int one, int two);

The definition of MyDllFunction in MyDll.cpp is:

int MyDllFunction(int one, int two)
{
    return one + two;
}

The C# class contains the following declaration:

[DllImport("MyDll.dll")]
extern public static int MyDllFunction(int one, int two);

In the same class I am calling MyDllFunction the following way:

int res = MyDllFunction(10, 10);

And this is where the bloody thing keeps giving me "Can't find PInvoke DLL 'MyDll.dll'". I have verified that I can actually do the PInvoke on system calls, such as "GetAsyncKeyState(1)", declared as:

    [DllImport("coredll.dll")]
    protected static extern short GetAsyncKeyState(int vKey);

The MyDll.dll is in the same folder as the executable, and I have also tried putting it into the /Windows folder with no changes nor success. Any advice or solutions are greatly appreciated.

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET