簡體   English   中英

在C#庫和C ++(CLR)之間傳遞對象

[英]Passing objects between C# library and C++ (CLR)

如何將對象從C#庫傳遞到C ++。

我可以調用一個返回voidint的函數,而不會出現任何問題。

現在考慮一下C#中的以下函數,

List<CSharpClass> CSharpFunction(string Input)

我的C#類包含的位置

public class CSharpClass
{ 
    string mystring = string.Empty;
    byte[] bytearray = null;        

    public byte[] bytearray 
    {
        get { return bytearray ; }
        set { bytearray = value; }
    }

    public string mystring 
    {
        get { return mystring ; }
        set { mystring = value; }
    }      
}

現在,我想在我的C ++中使用此列表。 所以我創造了

  typedef std::vector<class CSharpClass>  MyDetailList;

這是正確的方法嗎? 如果不是,我需要在C ++中使用什么?

如果要從C ++代碼調用C#dll,可以遵循本文 簡而言之,您將必須:
-編寫包含您的CSharpClass的托管DLL
-注冊托管DLL以用於COM或Native C ++
-從本機C ++代碼調用托管DLL

這個SO問題也很重要,如果您想避免使用COM,則包含其他解決方案


最初的誤導答案:

您可以查看本文以獲得相當不錯的教程。 簡而言之,您將必須:
-從您的C ++代碼編譯一個dll
-在C#和C ++之間馬歇爾(“翻譯”)您的類
-使用DllImport聲明從C#加載dll
-調用導入的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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