在C#中创建一个STL std::set并封送到C++
本文关键字:set std C++ STL 一个 创建 | 更新日期: 2023-09-27 18:21:21
实现这一目标的最佳方式是什么?我有一个文件名列表,它是在一个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#调用此函数,从而将数据传递给本机
[DllImport("TheDllName.dll")
public static extern void PassNames(string[] names, int nameCount);