我制作了一个非常简单的 DLL,如下所示:
extern "C"
{
__declspec(dllexport) int Try(int v)
{
return 10 + v;
}
}
然后我想在我的C#应用程序中使用它:
class Program
{
[DllImport("TestLib.dll")]
public static extern int Try(int v);
static void Main(string[] args)
{
Console.WriteLine("Wynik: " + Try(20));
Console.ReadLine();
}
}
在我尝试传递参数之前,它是工作的。现在,在运行时我遇到了以下错误:
对PInvoke函数 'ConsoleApplication2!ConsoleApplication1.Program::Try' 的调用导致堆栈不平衡。这很可能是因为托管的PInvoke签名与非托管的目标签名不匹配。请检查PInvoke签名的调用约定和参数是否与目标非托管签名相匹配。
我不知道问题出在哪里。
int __stdcall Try(int v)
。 - Hans Passant