【发布时间】:2011-12-01 21:07:35
【问题描述】:
我有以下 C++ 函数和 C# p/invoke decleration:
//C#
[DllImport("capture.dll", EntryPoint = "setup")]
public static extern void captureSetup(int rr);
//C++
extern "C" {
__declspec(dllexport) void setup(int rr)
但是我收到一个关于 p/invoke 不平衡堆栈的错误,这可能是由托管签名与非托管签名不匹配引起的。
谁能看出这有什么问题?
【问题讨论】:
-
您确定
setup使用C 调用约定吗? -
@EricJ。是的。在我添加
int参数之前,这甚至可以正常工作。 -
C# 声明不应该是 Short 吗?
-
@chris no,int 匹配 int,32 位,但 short 是 16 位