1
我有一个本地C++应用程序需要调用一个C#库。在研究了不同的选项之后,我选择添加一个C++/CLI库作为包装来处理两者之间的直接接口。我有一个非常大的数组,我从C++传递到C#(如此之大以至于通过Marshal :: Copy进行复制是不可能的)。我一直无法解决语法问题。本地C++数组通过C++/CLI C#数组
C#函数声明:
void Computation::passInVolume(int size, short volume[])
C++/CLI功能:
void Wrapper::passInVolume(int size, short volume[])
{
//this call succeeds, but does not contain my data
array<short>^ locArray = gcnew array<short>(size);
// This line produces: error C2440: 'type cast' : cannot convert from
// 'short []' to 'cli::array<Type> ^'
array<short>^ locArray2 = (array<short>^)volume;
// call requires array<short>^ as input type
Computation::passInVolume(size, locArray);
}
C++代码:
volImage = (short*)malloc(size*sizeof(short));
...
wrapper->passInVolume(size, volImage);
有没有办法来投这个,我只是缺少?我已经以其他方式成功完成了这个任务,从C#调用C++,过去没有任何问题(甚至是任何投射)。
我最终重构了C#使用指针。努力没有我最初想象的那么糟糕。 – Beast 2011-01-08 00:08:27