나는 C#을 함께 일하고 있어요하는 I 제 3 자 dll
이정렬 화하는 방법 Int 인 배열 또는 포인터로 Int 인 배열
(I이 중복 될 수 있지만 다른 스레드를 이해하지 못하는 이해) 그 int 배열 (또는 int 배열에 대한 포인터)가 매개 변수로 필요합니다. C#과 C/C++ 사이의 int 배열을 어떻게 마샬링합니까? 함수는 다음과 같이 선언됩니다.
// reads/writes int values from/into the array
__declspec(dllimport) void __stdcall ReadStuff(int id, int* buffer);
C int*
은 포인터일까요? 따라서 IntPtr
을 사용해야하거나, int[]
(선호)을 사용할 수 있다면 혼란 스럽습니다. 나는이 확인 될 줄 알았는데 :
[DllImport(dllName)]
static extern void ReadStuff(int id, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_I4)] ref int[] buffer);
// call
int[] array = new int[12];
ReadStuff(1, ref array);
것이라고 작업을? 아니면 C#에서이 함수를 안전한 코드로 선언해야합니까? 그것은 SafeArray는하지 (하지 테스트)
extern "C" __declspec(dllexport) VOID WINAPI ReadStuff(int id, int* buffer, int length);
+1이 필요하다고 생각합니다. – dtb