그래서 내 관리되지 않는 C++ DLL에있는 함수를 호출하려고합니다. 내 C# 응용 프로그램에서 Windows Mobile 플랫폼에서 PInvoke
void foo(char* in_file, char * out_file)
나는
[DllImport("dll.dll")]
public static extern void foo(byte[] in_file, byte[] out_file);
나는이 같은 ASCII 인코더를 통과 실제 매개 변수를 같은 함수를 선언 그래서
byte[] param1 = Encoding.ASCII.GetBytes(filename1);
byte[] param2 = Encoding.ASCII.GetBytes(filename2);
foo(param1, param2);
모든 때 길이를 제외하고, 작동 param1은 0 또는 36 또는 72 자 (바이트)입니다. 그런 다음 몇 가지 이유로 DLL은 수신 된 길이 1, 38, 73을 0x16 문자가 맨 끝에 첨부 된 것으로보고합니다.
저는 왜 반기는 디버깅을 시도하고 왜 이런 일이 일어나는지 이해하려고합니다. 어떤 아이디어? 36의 배수의 의미는 무엇입니까?
편집/솔루션 :
나는 가능한 대답이 생각 난이 게시 된 후. 바이트 배열로 변환하기 전에 문자열 끝에 null 문자 0x0을 추가하여이 문제를 해결했습니다. 그게 의도적인지는 모르겠지만.