这是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签名的调用约定和参数是否与目标非托管签名匹配。