DllImport,LPCWSTR类型怎么定义

乖紫 2012-10-01 09:50:49
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;
}
...全文
146 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyomumx 2012-10-01
  • 打赏
  • 举报
回复
CallingConvention = CallingConvention.StdCall
应该是这里的问题,没有说明默认应该是Cdecl

110,891

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧