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

时间:2019-07-18 21:05:47

标签: c# c++ dll

在我的C#应用​​程序中,我从C ++ DLL向量中获取,并且运行良好,但是随后我不得不将向量从C#应用程序发送至C ++ DLL,我不知道该怎么做。

你有什么主意吗?

1 个答案:

答案 0 :(得分:-2)

您可以传递指针,这可能就是我要做的:

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
}

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

编辑:更新了代码,因为实际上您无法使用托管内存来做到这一点