Problemer med oversættelser af klasse/type fra C++ til C#
Jeg skal kalde en C++ funktion i en dll.BOOL b = Initialization(INIT_MODE_ONLINE, (CallBackFun)&InitEnd, (CallBackFun)&ErrorMessage);
Problemet er den laver et callback til 1 af 2 funktioner der modtager et argument af typen ConfigData eller ErrorInfo
Jeg har problemer med at lave marshallingen mellem manages og unmanages kode. Mit program siger invalid parameter.
De to c++ klasser der skal oversættes er her:
class ErrorInfo
{
public:
enum ErrorNumber
{
ERROR_NUMBER_ABSENT = -1
};
enum AxisNumber
{
AXIS_NUMBER_ABSENT = -1
};
ErrorInfo()
{
lNumber = ERROR_NUMBER_ABSENT;
cAxis = AXIS_NUMBER_ABSENT;
ulReserved1 = ulReserved2 = 0;
cOptional[ 0 ] = '\0';
}
long lNumber;
char cAxis;
ULONG ulReserved1;
ULONG ulReserved2;
TCHAR cOptional[ 81 ];
};
og her:
class ConfigData
{
public:
short m_sMode;
short m_sType[TOTAL_AXES];
TCHAR m_szUSBC_SoftVer[24];
short m_sContrType;
short m_sAxes[3];
short m_sPoints[3];
short m_sNumOfAxes;
short m_sGripper;
short m_sNumDIn;
short m_sNumDOut;
short m_sNumAIn;
short m_sNumAOut;
short m_sGripperRange;
TCHAR m_szDeviceID1[ 16 ];
TCHAR m_szDeviceID2[ 16 ];
ConfigData()
{
m_sMode = INIT_MODE_DEFAULT;
m_sNumOfAxes = 0;
}
}
