通过C#';字符串';在C++dll中作为';字符**';
本文关键字:字符 字符串 通过 C++dll | 更新日期: 2023-09-27 18:00:28
嗨,我已经创建了c++函数作为
void MyClass::GetPRM(BSTR BString)
{
//----
}
在C#中,dll接口看起来像:
GetPRM(char* BString)
我的问题是如何将字符串作为char*从c#传递到c++dll?我试过void MyClass::GetPRM(std::string BString)
,但没有运气。任何建议
您应该能够使用
[DllImport("mycppdll", EntryPoint="MyClass_GetPRM")]
extern static void GetPRM([MarshalAs(UnmanagedType.BStr)] string BString)
但是,如果C++方法未声明为静态,则这不会考虑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)