C#에서 메서드를 호출하기 위해 서명되지 않은 char ** (C++ 인터페이스에 있음)을 마샬링하려고합니다.C#에서 unsigned char ** 데이터 형식을 마샬링하는 방법은 무엇입니까?
어떻게이 작업을 수행 할 수 있습니까? C++ 데이터 형식과 C# 데이터 형식이있는 목록이 있습니까?
감사합니다.
C#에서 메서드를 호출하기 위해 서명되지 않은 char ** (C++ 인터페이스에 있음)을 마샬링하려고합니다.C#에서 unsigned char ** 데이터 형식을 마샬링하는 방법은 무엇입니까?
어떻게이 작업을 수행 할 수 있습니까? C++ 데이터 형식과 C# 데이터 형식이있는 목록이 있습니까?
감사합니다.
unsigned char**
의 의미는 무엇입니까? 바이트 배열 인 경우 ref byte[]
을 사용하십시오. 0으로 끝나는 문자열 인 경우 ref string
을 사용하십시오.
http://www.pinvoke.net 페이지의 C#에 매핑 된 유명한 메소드 서명을 볼 수 있습니다.
마샬링 할 수있는 숫자는 ref string
입니다. [MarshalAs]
속성과 함께 올바른 문자 세트를 사용해야합니다.
C++
및 C#
모두에 대한 인터페이스가있는 직렬화 라이브러리를 사용해야한다고 생각합니다.
Google의 Protocol Buffers 또는 Facebook의 Thrift이이 두 가지 언어를 지원합니다.
확실히 훨씬 쉽고 안전해질 것입니다.
전송 된 데이터 유형 (원시 문자열 대신 정수, 구조체 등 사용)을 변경하려는 경우 직렬화 라이브러리를 사용하는 것이 좋습니다.
링크 주셔서 감사합니다! 하지만 이것은 내가 마샬링하고 다른 작업을 계속하는 데 매우 행복 할 정도로 내가 필요로하는 마지막 데이터 유형입니다. –
여가 시간을 갖게되면 정말 이상하게 생각합니다. 다른 메시지 유형을 교환하기 때문에 프로젝트의 완벽한 사용 사례로 보입니다. 프로토콜 버퍼를 사용하면 메시지 구조 또는 인터페이스를 변경하는 것이 매우 쉽습니다. 다음은 C#으로 시작하도록 안내하는 자습서입니다. http://snipplr.com/view/24475/google-protocol-buffers-usage-in-c-using-jon-skeets-protobufcsharpport/. Visual Studio IDE 내에서 사용할 수도 있습니다 (http://code.google.com/p/protobuf-net/). –
C++ 인터페이스에서이 문장은 다음과 같습니다. "This [unsigned char **]는 문자 배열에 대한 포인터 배열입니다. 각 문자는 표준 XSB 문자 중 하나입니다." 이 변수는 Sokoban 게임에서 오브젝트의 위치를 저장하는 역할을합니다. 고맙습니다! 이 경우 –
문자열 []가 맞아야합니다. – codymanix
그것은 작동합니다. 고맙습니다! –