C++ cli 从CStringArray*转换为C++/CLI阵列

C++ cli 从CStringArray*转换为C++/CLI阵列,c++-cli,C++ Cli,请告诉我如何将CStringArray*转换为C++/CLI数组。我正在创建一个包装dll,它需要将我的数据转换为非托管代码。我可以使用double*之类的基本数据类型,但不能用于CStringArray* 谢谢。这是解决方案 #include <msclr/marshal.h> #include <msclr/marshal_cppstd.h> #include <msclr/marshal_atl.h> CStringArray * myData; /

请告诉我如何将CStringArray*转换为C++/CLI数组。我正在创建一个包装dll,它需要将我的数据转换为非托管代码。我可以使用double*之类的基本数据类型,但不能用于CStringArray*

谢谢。

这是解决方案

#include <msclr/marshal.h>
#include <msclr/marshal_cppstd.h>
#include <msclr/marshal_atl.h>


CStringArray * myData; //Assume data is already filled
array<String ^> unmanagedData = gcnew array<String ^) (m_nDataCount);

for (int j = 0; j < m_nDataCount; j++)
{
    String ^ stepName = marshal_as<String ^> (myData->GetAt(j));
    unmanagedData[j] = stepName;
} 
#包括
#包括
#包括
CStringArray*myData//假设数据已经填充
数组unmanagedData=gcnewarraygetat(j));
unmanagedData[j]=步骤名;
} 

封送处理是解决方案。感谢@crashmstr帮助我破解这个

根据
CStringArray
长度分配一个
Array
,然后对
CStringArray
中的每个元素封送为
String^
并添加到数组…?@crashmstr是的,我为数组分配了内存-“gcnewarray”但是我不知道如何封送它,非常感谢。我指的是[链接](),弄糊涂了。我将试着标出答案。很抱歉,我对注释的格式设置非常糟糕。@crashmstr如果我尝试封送“错误C4996:'msclr::interop::error\u reporting\u helper::marshal\u as”:库不支持此转换,则会出现此错误。我正在跟踪链接-。