簡體   English   中英

在C#中創建一個STL std :: set並編組為c ++

[英]Create an STL std::set in C# and marshal to c++

實現這一目標的最佳方法是什么? 我有一個在C#windows服務中生成的文件名列表。 我需要最終將它們放入STL集中,並將其推送到文件映射。 我假設實際上在C#中創建這個結構要么被禁止,要么太難以值得,但我可以使用一個本機dll返回指向它創建的集合的指針,然后我在文件映射中傳遞? 這里的任何想法都會有所幫助!

在C#中創建std::set並不實用。 但是,可以通過PInvoke將名稱集合傳遞給C,並將它們放入std::set中。

extern "C" {

  void PassNames(const wchar** ppNames, int nameCount) {
    std:set<std::string> nameSet;
    for (int i = 0; i < nameCount; i++) {
      nameSet.insert(ppNames[i]);
    }

    PassOfTheSet(nameSet);
  }
}

然后你可以使用PInvoke從C#調用這個函數,從而將數據傳遞給native

[DllImport("TheDllName.dll")
public static extern void PassNames(string[] names, int nameCount);

暫無
暫無

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

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