将字符串向量从 C# 传递到C++ DLL

Pass strings vector from C# to C++ DLL

本文关键字:C++ DLL 字符串 向量      更新时间:2023-10-16

在我的 C# 应用程序中,我从 DLL 向量中获取C++并且效果很好,但是我必须将向量从 C# 应用程序发送到C++ DLL,我不知道该怎么做。

你有什么想法吗?

你可以传递指针,这可能是我的做法:

void PassToCpp(){
    List<string> MyStringList = {"hello", "world"};
    cpp_function(&MyStringList[0], MyStringList.Count);
}

将是 C# 代码

void cpp_function(const char* ptr, size_t count) {
   std::vector<std::string> my_vector;
   my_vector.reserve(count);
   std::copy(ptr, ptr + count, my_vector.begin());
   // go nuts here
}

请记住,我自己实际上没有做过这样的事情,但我可能只是传递一个指针,似乎是一项微不足道的任务,两种语言都支持它。

编辑:更新的代码,因为您确实无法使用托管内存执行此操作