我目前遇到了从 C# windows 应用程序调用 Win32 DLL[Native] 的问题。
我已经来了这么远。
C++ 源代码:
extern "C" __declspec(dllexport) int PlaceSound(__in DWORD frequence, __in DWORD duration)
{
Beep(frequence, duration);
return 0;
}
C#源代码:
[DllImport("SampleLib.dll")]
public extern static int PlaceSound(int Freq, int Dura);
public form1 { InitializeComponements; PlaceSound(150, 500); }
在调试时,我收到了声音,但是,当库返回它的整数值时,我似乎得到了一个 pinvoke。
Pinvoke:
对 PInvoke 函数 'SoundTracer!SoundTracer.Form1::PlaceSound' 的调用使堆栈失衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。
我究竟做错了什么?