簡體   English   中英

在C ++ dll中將C#字符串作為'Char *'傳遞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM