C로 작성된 DLL 파일이 있습니다. C# 코드에서 C DLL을 사용하려고합니다. C 프로그램 메소드는 int **를 리턴합니다. int ** in c 및 int [] [] in C#는 동일합니까?int ** 및 int [] [] C#에서 동일합니까?
C 프로그램에서 값을 반환하는 중에 오류가 발생했습니다.
C 방법
__declspec(dllexport) int someMethod
(
size_t *foo,
int **bar
)
{
*foo = 10;
**bar = 10;
}
내 C# 코드 C의 int**
와 C#의 int[][]
바이너리 수준에서 개념 비슷하지만 다른이
[DllImport(@"my.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = true, BestFitMapping = true, EntryPoint = "someMethod")]
public unsafe static extern int someMethod
(
out Int16 foo,
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(JaggedArrayMarshaler))]
out int[][] bar
);
일부 코드를 보여줄 수 있습니까? 어떤 오류가 발생하고 있습니까? – GrandMasterFlush
'**'는 포인터를 가리키는 포인터입니다. '[] []'은 배열의 배열, 즉 "들쭉날쭉 한"배열입니다. 나는 그것이 같은 것을 의미하지는 않는다는 느낌을 가지고있다 :) – walther
간단한 콘솔 앱. DLLImport 문을 사용하면 도움이 될 것입니다 –