В настоящее время у меня есть некоторый код на C ++, который обрабатывает ‘char *** myArray’ намного быстрее, чем любой другой метод сравнения строк.
Я также оборачиваю свой c ++ в DLL и вызываю функции из C # GUI, который использует DataTable.
Мне любопытно, как я передаю свои данные в DataTable через мой char *** myArray.
Interface.cs:
DataTable table
cppFunctions.cpp:
int CheckColumn(char ***myArray)
{
int k = 0;
double weight = 0;
for (int i = 1; i < RowCount; i++)
{
for (int j = i + 1; j < RowCount; j++)
{
weight = nGram(myArray[i][colNum], myArray[j][colNum], 3);
k++;
}
}
return k;
}
Если я передаю int, double, string или любое другое простое значение, оно работает просто отлично.
DataTable является частью .NET FCL, поэтому вы не можете его передать. Причина работы int, string и т. Д. Заключается в том, что они являются примитивами. Вы можете сериализовать / десериализовать DataTable.
В качестве альтернативы вы можете использовать маршаллинг:
http://msdn.microsoft.com/en-us/library/ms235266.aspx