나는 C++에서 다음과 같은 구조체가 :원수 C++ 구조체 배열
void GetData(LPRData *data);
: 이러한 구조의 3의 배열을 얻기 위해 내가으로 호출/P이야
#define MAXCHARS 15
typedef struct
{
char data[MAXCHARS];
int prob[MAXCHARS];
} LPRData;
그리고 기능을 C에서
는 ++ 나는이 같은 다만 것 :
LPRData *Results;
Results = (LPRData *)malloc(MAXRESULTS*sizeof(LPRData));
GetData(Results);
을 그리고 그것은 잘 작동,하지만 C#에서 내가 그것을 얻이 수없는 것. 내가 만든이 같은 C#을 구조체 :
public struct LPRData
{
/// char[15]
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 15)]
public string data;
/// int[15]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15)]
public int[] prob;
}
을 그리고 나는 그 3 (및 모든 하위 배열)의 배열을 초기화하고이에 전달할 경우 :
GetData(LPRData[] data);
그것을 성공하면 반환되지만 LPRData 배열의 데이터는 변경되지 않습니다.
는 심지어 원시 바이트 배열 3 LPRData 년대의 크기를 생성하고이 같은 함수 원형으로 되었 시도한 :
GetData의 (바이트 [] 데이터);
하지만 그 경우에는 첫 번째 LPRData 구조에서 "데이터"문자열을 가져 오지만 그 뒤에는 동일한 LPRData의 "prob"배열을 포함하여 아무 것도 없습니다.
제대로 처리하는 방법에 대한 아이디어가 있으십니까?
이 방법을 사용했지만 Mono에서 변수가 null 참조로 설정된다는 예외가 발생합니다. 예를 들어 "prob"는 null이므로 작동하지 않습니다. 나는 이것을 어떤 시점에서 새 것으로 만들어야 하는가, 아니면 어떻게 든 프레임 워크에 의해 다루어지기로되어있는가? 감사 – swinefeaster