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

时间:2014-09-15 14:51:04

标签: c++-cli

您能否告诉我如何将CStringArray *转换为C ++ / CLI数组。我正在创建一个包装器DLL,它需要将我的数据转换为非托管代码。我能够使用像double *这样的基本数据类型,但不能用于CStringArray *。

谢谢。

1 个答案:

答案 0 :(得分:1)

这是解决方案

#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;
} 

Marshaling就是解决方案。感谢@crashmstr帮助我破解这个