【发布时间】:2011-10-05 18:49:12
【问题描述】:
我做了一个非常简单的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 签名的约定和参数与目标匹配 非托管签名。
我不知道问题出在哪里。
【问题讨论】:
-
在你的 C++ 代码中使用
int __stdcall Try(int v)。