Я пытаюсь заставить dll работать.
DLL написана на C ++, и ей нужно передать int * в C #.Я потратил несколько дней, чтобы заставить это работать, и это не удалось.Я начинаю вырывать волосы, потому что не могу понять, что не так.Я перепробовал все.Я не так знаком с C ++, как с C #, поэтому проблема может возникнуть оттуда ...
Он хорошо читает из DLL, но возвращаемые значения не верны.Я удалил входные данные, и я просто пытаюсь получить тестовый массив.Функция, которую я использую в C ++:
extern "C" EAGLE128DLL_API int* encryptFunc()
{
//return encrypt(x, Q);
int t[128];
for(int i = 0; i < 128; i++)
{
t[i] = 5;
}
return t;
};
Код C #, который я использую для вызова этой функции, выглядит следующим образом:
[DllImport("C:\\Users\\Leon\\Documents\\Visual Studio 2010\\Projects\\Eagle128DLL\\Release\\Eagle128DLL.dll")]
public static extern IntPtr encryptFunc();
...
IntPtr outputPtr = encryptFunc();
int[] output = new int[128];
Marshal.Copy(outputPtr, output, 0, 128);
Значения в выходном массиве должны быть всеми 5-ю.Но то, что я получаю: 16187392, 16190224 ... и т. Д. (Не 5-е)