这个VB.Net调用C win32 dll有什么问题

时间:2014-12-03 14:54:35

标签: c vb.net windows

这是VB的正确签名

<DllImportAttribute("MyDll.dll", CharSet:=CharSet.Unicode)>
Private Shared Function GetOrderingCodeCassetteCasing(<Out()> ByVal OrderingCode As    StringBuilder,ByVal OrderingCodeElements As Integer) As Integer

extern "C" int __stdcall GetOrderingCodeCassetteCasingW(LPWSTR OrderingCode,int OrderingCodeElements)

C函数将信息复制到OrderingCode,我创建一个大小为100的StringBuilder并将其传递给dll。我已经尝试过string,stringbuilder,byref,byval等等。我的所有结果都得到了这个

对PInvoke函数的调用'RohexTest!RohexTest.Econovent :: GetOrderingCodeCassetteCasing'使堆栈失去平衡。这很可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。

0 个答案:

没有答案