JNI undefined reference to...mal wieder :(



  • mal wieder komme ich zu euch mit einer undefined reference, die ich in diesem Fall überhaupt nicht nachvollziehen kann.

    #include <jni.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "BigNumGui.h"
    #include "BigNum.h"
    #include "BigNumDivHelper.h"
    
    JNIEXPORT jstring JNICALL Java_BigNumGui_div
      (JNIEnv *env, jobject obj, jstring num1, jstring num2) {
    	const char *numC1 = (*env).GetStringUTFChars(num1, 0);
    	const char *numC2 = (*env).GetStringUTFChars(num2, 0);
    
    	const unsigned long numL1 = strtoul(numC1, NULL, 10);
    	const unsigned long numL2 = strtoul(numC2, NULL, 10);
    
    	BigNum numB1 = BigNum(numL1);
    	BigNum numB2 = BigNum(numL2);
    
    }
    

    wie ihr seht, soll das ganze JNI werden jetzt bekomm ich aber beim kompilieren mittels
    g++ -shared BigNumGui.c -o libBigNumGui.so
    folgende Fehlermeldungen
    undefined reference to `BigNum::BigNum(unsigned long)'
    das ganze natürlich 2 mal und dann 3 undefined references zum destructor, reichlich merkwürdig finde ich, oder kann das jemand erklären?

    mfg



  • Ist BigNum eine Klasse aus deinem Projekt, oder aus einer Bibliothek? Wenn sie aus ner Bibliothek ist, solltest du noch die Library hinzufügen und ansonsten würde es reichen das SourceFile deinem Projekt hinzuzufügen!



  • BigNum ist eine Klasse, die im gleichen Verzeichnis liegt, wie die BigNumGui.c und die BigNumGui.h, die liegen eigentlich alle im gleichen Verzeichnis, deswegen irritiert mich diese Meldung ja auch derart



  • Brauchst du da nicht nicht ein -c für den G++?



  • ne das -c ist für das objectfile in meinem Fall hab ich vergessen die anderen Files dran zu linken



  • Rocko105 schrieb:

    BigNum ist eine Klasse, die im gleichen Verzeichnis liegt, wie die BigNumGui.c und die BigNumGui.h, die liegen eigentlich alle im gleichen Verzeichnis, deswegen irritiert mich diese Meldung ja auch derart

    Du musst alle Sourcefiles, die Du der Bibliothek hinzufügen möchtest (und die, die von diesen benutzt werden), auf der g++-Kommandozeile angeben. Die Tatsache, "dass da was im Verzeichnis liegt" kratzt den Compiler nicht besonders. Wieso sollte es auch? 😉



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten