如何在c#dllimport

时间:2017-04-21 09:33:13

标签: c# c++ dllimport

我在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的返回类型应该是什么?

提前致谢。

1 个答案:

答案 0 :(得分:-1)

首先,你应该在C#端使用StringBuilder而不是string。其次,您应该在C#中创建与c ++ VARIANT兼容的类,然后将其编组为对象。