您好我已经创建了c ++函数
void MyClass::GetPRM(BSTR BString)
{
//----
}
在C#中,dll界面如下所示:
GetPRM(char* BString)
我的问题是如何将字符串作为char *从c#传递给c ++ dll?
我试过了
void MyClass::GetPRM(std::string BString)
但没有运气。
任何建议
答案 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)