c# 调用 c++函数 问题
c++ 的DLL 文件中定义了一个 函数:
int RunService(char *msgType, char *version, char *in, size_t inLen, char *out, size_t *outLen);
参数说明:
msgType:输入参数
version:输入参数
in:输入参数
inLen:输入参数
out:是输出参数
outLen:是输出参数
我在 c# 如下定义:
[DllImport("XXX.dll")]
public static extern int RunService(string msgType, string version, string inp , UInt32 inLen, StringBuilder outp, out UInt32 outLen);
请问这样定义 可以吗?
我在测试这个函数时报如下错误:
对 PInvoke 函数“HISShell!HISShell.CallYBDll::RunService”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
求帮助!