에 나는 내가 (DLL을 가져온 후) C#에서이 기능을 사용할 때 매개 변수를 마샬링 할 void someFunc(char* arg1, int* arg2)
C++에서 함수를했습니다 .. 어떻게해야 마샬링 INT * C#
[DllImport(Dllname)]
extern void someFunc([MarshallAsAttribute(UnmanagedType,LPStr)] string arg1, IntPtr arg2);
여기서 IntPtr을 사용해야합니까? C++에서 int 변수의 주소를 전달할 수 없으므로 포인터가 C++로 상륙합니다.
실제로 안전하지 않은 코드 블록을 사용하여 C#에서 네이티브 포인터를 사용할 수 있습니다. 내가 직관적이지 않은 API로 이어 지므로 추천하지는 않겠지 만. –
그 포인터의 의미를 설명해야합니다. 함수가 포인터를 반환 한 후 포인터를 유지하고 포인터가 null 인 경우 포인터가 가리키는 데이터의 양이 특히 많습니다. – CodesInChaos