Avatar billede _et Praktikant
19. september 2007 - 10:00 Der er 1 kommentar og
1 løsning

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;
  }
}
Avatar billede _et Praktikant
19. september 2007 - 10:01 #1
typen på callbacket er
typedef void (*CallBackFun)( void *);
Avatar billede _et Praktikant
26. december 2007 - 13:39 #2
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester