传递C#'字符串'在C ++中,dll为' Char *'

时间:2015-06-29 23:30:34

标签: c# c++ .net

您好我已经创建了c ++函数

void MyClass::GetPRM(BSTR BString)
{
//----
}

在C#中,dll界面如下所示:

GetPRM(char* BString)

我的问题是如何将字符串作为char *从c#传递给c ++ dll? 我试过了 void MyClass::GetPRM(std::string BString)但没有运气。 任何建议

1 个答案:

答案 0 :(得分:2)

你应该可以使用

 [DllImport("mycppdll", EntryPoint="MyClass_GetPRM")]
 extern static void GetPRM([MarshalAs(UnmanagedType.BStr)] string BString)

但是,如果该方法未声明为静态,则不会考虑C ++名称修改,也不会考虑C ++方法的this指针。

在C方面,您可能需要这样的包装函数:

 extern "C" __declspec(dllexport) void __stdcall
 MyClass_GetPRM(BSTR BString)
 {
     MyClass::GetPRM(BString);
 }

需要调整C#声明以匹配导出的名称:

 [DllImport("mycppdll", EntryPoint="MyClass_GetPRM")]
 extern static void GetPRM([MarshalAs(UnmanagedType.BStr)] string BString)