首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

DllImport,LPCWSTR类型如何定义

2012-10-19 
DllImport,LPCWSTR类型怎么定义C++写的函数有一个参数是LPCWSTR类型,C#里调用总是不成功:“对函数的调用导

DllImport,LPCWSTR类型怎么定义
C++写的函数有一个参数是LPCWSTR类型,C#里调用总是不成功:“对函数的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配”
C#定义:
[DllImport("testdll.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
public static extern int testfun([In, MarshalAs(UnmanagedType.LPWStr)]string str);

专门写了一句代码来试验,这个C++函数是:
EXTERN_C _declspec(dllexport) int testfun(LPCWSTR str)
{
return 12;
}

[解决办法]
CallingConvention = CallingConvention.StdCall
应该是这里的问题,没有说明默认应该是Cdecl

热点排行