从C#调用dll函数时的PInvokeStackImbalance

Tom*_*ies 2 c# pinvoke dllimport dllexport

我正在编写一个WPF应用程序,需要调用我编写的dll中存在的一些C++代码.我总是得到PInvokeStackImbalance错误,即使是最基本的测试功能.例如,在C++ DLL中:

extern "C" __declspec(dllexport) void Test( int foo);
Run Code Online (Sandbox Code Playgroud)

该功能什么都不做.c#侧看起来像这样:

    [DllImport("myDll.dll", CharSet = CharSet.Auto)]
    private static extern void Test( int foo);
Run Code Online (Sandbox Code Playgroud)

我称之为c#函数是这样的:

测试(1)

......我得到了一个PInvokeStackImbalance !! 怎么会这样?

提前致谢...

汤姆

Fel*_*ano 5

尝试指定CallingConvention.Cdecl.文档中有一个例子.默认调用约定Winapi在桌面窗口上; 但是你的函数被声明为extern C.