Compilierngsfehler wegen DLLIMPORT



  • HI,

    ich hoffe ihr könnt mir helfen und damit meinen ruhmreichen Start in die Welt von C/C++ mit mir begleiten 😉

    Zur "Idee". Ich hab ne vorhandene DLL, die ich über JNI aufrufen will/muss.
    Nach langem gewürge habe ich feststellen dürfen, dass JNI wohl c-Files und keine cpp-Files braucht. Entsrechend compiliere ich mit gcc, und nich mit g++.
    Mit dem sagenumwobenen HelloWorld klappt das auch wunderbar.

    Von der vorhandenen DLL habe ich auch desn Header-File, so dass ein #include kein problem darstellt.

    nun zum Problem. Beim Compilieren mault der Compiler an ner Menge sachen rum. Die meisten Fehlermeldungen sehen so aus:

    D:/blabla/rcm.h:150: warning: data definition has no type or storage class
    D:/blabla/rcm.h:152: error: syntax error before "MY_Bool"
    

    im HeaderFile schaut des so aus (Zeilen 149 - 156):

    DLLIMPORT MY_Bool STDCALL
            my_disconnect(void);
    DLLIMPORT MY_Bool STDCALL
            my_getValueA(MY_ValueA *valueA);
    DLLIMPORT MY_Bool STDCALL
            my_getValueB(MY_ValueB *valueB,
                                         MY_Count *count);
    

    naja, von den Fehler gibt es noch ne menge mehr, auch bei primitiven Datantype - wie z.B.

    D:/blabla/rcm.h:136: error: syntax error before "const"
    D:/blabla/rcm.h:136: error: parse error before "my_getInterfaceVersion"
    D:/blabla/rcm.h:136: warning: data definition has no type or storage class
    
    DLLIMPORT const char *STDCALL my_getInterfaceVersion(void);
    

    die flags mit dene ich compiliere sind folgende:

    gcc -I"D:\blabla" -I"C:\Program Files\Java\jdk1.6.0_03\include\win32" -I"C:\Program Files\Java\jdk1.6.0_03\include" -O0 -g3 -c -fmessage-length=0 -D__int64=long -MMD -MP -MF"src/appAdaptor.d"

    ich hoffe ihr könnt mir dabei helfen. I have no idea, weil halt ma noch nich wirklich was in C geproggt hab.

    grüße der DJ



  • ach, ich hab den Kopf vom header und einen wohl wichtigen ausschnitt aus dem compiler-output vergessen:

    In file included from ../src/appAdaptor.c:3:
    D:/blabla/rcm.h:22:6: #error Unknown platform.
    In file included from ../src/appAdaptor.c:3:
    
    #if defined(_MSC_VER) && defined(_M_IX86)
        #ifndef DLLIMPORT
            #define DLLIMPORT               __declspec(dllimport)
        #endif
        #define STDCALL                     __stdcall
    #elif defined(__linux__) && defined(__i386__)
        #define DLLIMPORT
        #define STDCALL
    #else
        #error Unknown platform.
    #endif
    

    Und wie gesagt, es ist eine fertige DLL deren Funktionen ich über JNI aufrufen soll. Ich soll also eine Art Adapter machen, mehr nicht. Gelernt hab ich Java, mit C hab ich noch nicht wirklich was gemacht.

    Grüße



  • djslimer schrieb:

    D:/blabla/rcm.h:22:6: #error Unknown platform.

    da sind die defines nicht richtig gesetzt. welches OS und welchen compiler benutzt du? (falls windoofs dann nehme den von ms).
    🙂



  • danke.

    hab des ma zum grund genommen, die header-datei zu ändern und auf NT abzufragen, und hab die anderen rausgenommen. nun gibt er andere fehler aus.

    drum nehm ich an, dass die DLL mit dem microdoof Compiler erstellt worden ist, ich benutz den von cygwin.

    ich werd dann auf Linux ausweichen, denn es soll alles unter einem Dach (Eclipse) laufen. oder ich versuch nun nochma 2 wochen zu verbringen, um nun den M$-Compiler einzubinden ^^

    danke für die Hilfe 😃


Anmelden zum Antworten