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