我在dll中有一个C ++函数:
VARIANT __stdcall CallBlah(LPCSTR sA, LPCSTR sB, LPCSTR sC, LPCSTR sD, LPCSTR sE, LPCSTR sF)
{
char *srtnstring = NULL
... do stuff ...
_bstr_t bstrt(srtnstring);
return _variant_t(bstrt)
}
我正在尝试使用这个我是一个c#app但我遇到了Variant返回类型的问题。我的c#import是:
[DllImport("MyDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr callBlah(
string A,
string B,
string C,
string D,
string E,
string F);
但是当我运行c#app时,我得到了一个不平衡的堆栈异常。 dllImport c#signature的返回类型应该是什么?
提前致谢。
答案 0 :(得分:-1)
首先,你应该在C#端使用StringBuilder而不是string。其次,您应该在C#中创建与c ++ VARIANT兼容的类,然后将其编组为对象。