내 C# 응용 프로그램에서 InParameter를 VC++ DLL의 내 보낸 함수로 전달해야합니다.C#에서 C++로 마샬링
int func_name (FILE* fp, BYTE& by);
fp
가이고 by
파라미터 밖으로 : 함수는 2 개 매개 변수를 수용한다.
FILE*
의 경우 IntPtr
을 사용하고 BYTE
의 경우 바이트를 사용하여 마샬링을 고려했습니다. 맞습니까? 내가 C#으로 다음을 작성한다면
[DllImport("name_of_project.dll", CharSet = CharSet.Ansi)] public static extern int func_name(IntPtr FilePointer, [MarshalAs(UnmanagedType.BYTE&)] byte by);
이게 작동할까요? 마샬링 문에서 '&'기호에 오류가 발생한다고 생각합니다. out 매개 변수를 참조로 전달하는 방법은 무엇입니까?
귀하의 도움을 많이 주시면 감사하겠습니다.
감사합니다, Viren
Ravadre에게 감사드립니다. 하지만 여전히 FILE * 형식 마샬링이 붙어 있습니다. 제 4 바이트 부호없는 정수를 사용해야합니까? 지금 테스트 할 코드가 없습니다. ] 공공 정적 통근자의 INT의 FUNC_NAME (U4 파일 포인터, 바이트로부터으로 (charset에서 = CharSet.Ansi "name_of_project.dll") 같이 DllImport : 나는 곧 그것을 얻을 것이다 그리고 지금 나는 다음과 같은 생각하고 들어 .. 최대한 빨리 여기에 업데이트됩니다); – zack
Uf, 미안 모든 편집을 위해, 나는이 해결책을 점검하고 꽤 잘 작동합니다. –
cool..thats 깨끗한 아이디어 .. 내 생각 엔 .. 감사합니다. – zack