[英]Passing C# StringBuilder / string to C++ char* using DLL
[英]Passing C# 'string' in C++ dll as 'Char*'
嗨,我有創建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 ++方法的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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.