C-Klasse in .Net-Projekt einbinden



  • Hallo Forum,
    ich habe ein Problem beim Einbinden einer C-Klasse in mein Windows-Forms Projekt (C++/CLI). Beim Kompilieren tritt jedesmal ein Fehler bei den folgenden typedefs auf:

    typedef double (CALLBACK *gc) (int* Fluidindex,int* Constindex);
    typedef double (CALLBACK *gp) (int* cofnam,int* inpar1,double* valu1,int* inpar2,double* valu2,int* ovar,int* idid,int* iounit);
    

    Fehler:
    syntax error : missing ")" befor "*"
    und ähnliches
    Wenn ich die Klasse in ein normales C++-Projekt einbinde kompiliert sie ohne Probleme durch.
    Woran kann das Liegen?

    Danke

    Matthias



  • Ist denn CALLBACK im Kontext bekannt?



  • Wo ist denn hier eien "Klasse"?



  • CALLBACK ist in windef.h der Platform SDK definiert

    #define CALLBACK __stdcall
    

    die hatte ich nicht inkludiert, daher der Fehler.
    Wenn ich ein
    [/cpp]#include <windef.h>[cpp]
    einfüge bekomme ich einen Fehler in der winnt.h der Platform SDK.
    Ich als DOTNET-Kind finde diese Platform SDK mit ihren ganzen Präprozessor-Anweisungen total verwirrend.
    Diese ganzen include-Dateien scheinen ja so aufeinander aufzubauen, daß ich nicht einfach windef.h includen kann. gibt es da eine andere include-Datei die mir alle defines die ich brauche mitgibt?

    Hier zur erklärung ein bisschen mehr Code:
    CGPI.h:
    [cpp]
    #if !defined(AFX_GPI1_H__6E401579_BF70_42E3_9877_37F8608163B4__INCLUDED_)
    #define AFX_GPI1_H__6E401579_BF70_42E3_9877_37F8608163B4__INCLUDED_

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000

    #define gaspkdll

    #include <vector>

    typedef double (CALLBACK *gc) (int* Fluidindex,int* Constindex);
    typedef double (CALLBACK *gp) (int* cofnam,int* inpar1,double* valu1,int* inpar2,double* valu2,int* ovar,int* idid,int* iounit);

    class CGPI
    {
    // ein paar Variablen
    .
    .
    .
    static gc gasconst;
    static gp gascalc;
    .
    .
    .
    // viele Variablen und einige Funktionen
    }



  • Hätte wohl mal Vorschau benutzen sollen

    #if !defined(AFX_GPI1_H__6E401579_BF70_42E3_9877_37F8608163B4__INCLUDED_) 
    #define AFX_GPI1_H__6E401579_BF70_42E3_9877_37F8608163B4__INCLUDED_ 
    
    #if _MSC_VER > 1000 
    #pragma once 
    #endif // _MSC_VER > 1000 
    
    #define gaspkdll 
    
    #include <vector> 
    
    typedef double (CALLBACK *gc) (int* Fluidindex,int* Constindex); 
    typedef double (CALLBACK *gp) (int* cofnam,int* inpar1,double* valu1,int* inpar2,double* valu2,int* ovar,int* idid,int* iounit); 
    
    class CGPI 
    { 
    // ein paar Variablen 
    . 
    . 
    . 
    static gc gasconst; 
    static gp gascalc; 
    . 
    . 
    . 
    // viele Variablen und einige Funktionen 
    }
    


  • Das Problem hat sich erledigt.
    Habe Windows.h included und jetzt sind alle Fehler verschwunden.
    Vielen Dank, die CALLBACK-Frage war genau der Anstoß den ich gebraucht habe.
    Schöne Grüße,
    Matthias


Anmelden zum Antworten