Zum Inhalt springen

Zonbléou

Mitglieder
  • Gesamte Inhalte

    35
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Zonbléou

  1. Hi, am Anfang sehen Sie die libs und dll die ich eingefügt habe und dann die fehlermeldungen am Ende. Ich lese auch gerade die FAQ von MinGW aber hilft mir nicht so viel. Vielleicht kriege ich das irgendwann und habe ich auch viel gelernt.
  2. Hallo, ich habe es immer noch nicht richtig. Die libkernel32.a die ich gefunden habe bezieht sich auf dem MinGW. Ich weiss nicht, ob ich da richtig bin. Außerdem ich denke da brauche irgendeine .a lib von meiner JNI-DLL. Könnten Sie mir bei diesen Begriffe helfen? In meinem MinGW C Linker -> hared Library Settings unter dem Eclipse habe ich folgende Begriffe gefunden und ich weiss nicht auf welchen DLL sie sich beziehen; auf meine erzeugte JNI-DLL oder auf die C-DLL? - Shared object name, -Import Library name, und -DEF file name. Bitte um Hilfe, bin Anfänger. Danke.
  3. Guten morgen Herren, ich hoffe störe gerade nicht. Ich habe am Freitag versucht zu beschreiben wie ich mein kernel32.dll und kernel32.lib eingefügt habe. Ich hoffe das kann man verstehen. Wenn Sie bischen Zeit haben, schauen Sie, ob Sie mir weiter helfen können. Da bin ich gerade blockiert. Vielen Dank. Zonbléou
  4. Ich weiss nicht genau wie ich das richtig machen kann. Ich arbeite mit eclipse cdt und MinGW. Unter Project -> Properties -> C/C++Builder -> Settings habe und dann MinGW C Linker -> Libraries habe ich unter Libraries(-l) kernel32 eingefügt und unter Libraries search path(-L) habe ich C:\WINDOWS\system32 und dann C:\WINDOWS\W32api eingefügt. Ich weiss, dass es falsch sein kann aber nur so kann man mir helfen. Danke nochmal. Zonbléou
  5. Hallo nochmal, ich habe den Pfad von kernel32 gesucht und das verlinken über MinGw wie vorher beschrieben versucht und ich kriege so was als Fehlermeldung: Warning: resolving _Java_triangleberechner_Triangulationsberechnung__1mcbe_1RechneMitZeile by linking to _Java_triangleberechner_Triangulationsberechnung__1mcbe_1RechneMitZeile@12 src\Triangleberechner.o:Triangleberechner.c:(.text+0x117): undefined reference to `_LoadLibrary' C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/libgcc.a(w32-shared-ptr.o).text+0x31): undefined reference to `__imp__GetAtomNameA@12' C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/libgcc.a(w32-shared-ptr.o).text+0x159): undefined reference to `__imp__FindAtomA@4' C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/libgcc.a(w32-shared-ptr.o).text+0x2b1): undefined reference to `__imp__AddAtomA@4' C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/libgcc.a(w32-shared-ptr.o).text+0x2d2): undefined reference to `__imp__FindAtomA@4' collect2: ld returned 1 exit status Build error occurred, build is stopped[/code] Gibt eine Möglichkeit weiter zu helfen? Grüße.
  6. Oh! Sorry! ich komme damit noch nicht klar. soll ich wie die andere C-DLL und Header unter GCC C Compiler den Pfad zu dem Lib geben und unter MinGW Linker die kernel32Dll laden? Oder geht das über meine C-Wrapper? Danke
  7. Hallo, zum Glück bist Du noch Online und vielleicht hast Du noch bischen Zeit. Ich habe das hier versucht: JNIEXPORT void JNICALL Java_triangleberechner_Triangulationsberechnung__1mcbe_1RechneMitZeile (JNIEnv *env, jobject obj, jbyteArray jarr) { jint HINSTANCE; // Der Array muss mit seiner Länge übernommen werden //jsize l = (*env)->GetArrayLength(env, jarr); jbyte *input64 = (*env)->GetByteArrayElements(env, jarr, 0); /*Aufruf der Methode mcbe_1RechneMitZeile in der Bibliothek Triangulationsberechnung.dll * dieses C-File muß in der gleichen Bibliothek zur Verfügung stehen. * */ LoadLibrary("d_cal12.DLL"); // Speicher freigeben und rückkopieren des Arrays (*env)->ReleaseByteArrayElements(env, jarr, input64, 0); } und ich kriege so was als fehlermeldung: (.text+0x117): undefined reference to `_LoadLibrary' collect2: ld returned 1 exit status kannst Du mir dann dabei helfen wie ich diese Loadlibrary(), benutzte und getAdresse Methoden? Vielen Dank nochmal. Zonbléou
  8. Hallo, klar ich weiss, dass es keinen Spaß macht das ganze zu lesen. Aber ich wollte das ganze deutlich darstellen damit man versteht was ich so tue. Ich versuche jetzt mein problem ganz allgemein zu beschreiben. Ich will das ganze so bauen, dass ich das statisch linke. Ich habe die C-DLLs und die Header, die zum Erzeugen von diese DLLs gebraucht worden. Ich habe schon meine JNIDLL erzeugt. Wie kann ich das ganze zusammen bringen, dass die Funktionen aus C-DLLs benutzt werden? Vielen Dak nochmal für Deine Mühe meine Fragen zu verstehen. Zonbléou
  9. Zonbléou

    Java RMI

    Hallo, ich bin in diesem Forum Zonbléou. Ich habe eine Frage bzgl. Java, Jni und c dlls. Vielleicht kennst Du dich mit dem Thema um mir zu helfen? Oder jemand der sich mit dem Thema kennt um meine Frage weiterzuleiten? Vielen Dank. Zonbléou
  10. Hallo Leute, jetzt bin ich einbischen überfordert und bitte ich deswegen um eure Hilfe. Ich arbeite mit Eclipse cdt, MinGW und MSYS. CDT für C/C++ Umgebung, MinGW für GNU(c und c++ Compiler unter Windows). MSYS nur um einige Funktionalitäten von LINUX benutzen zu können. Für ein Projekt wurde eine Software in C geschrieben und es gibt auch die DLL für C die zur Verfügung stehen. Ich habe außerdem ein paar Header Dateien die Funktionsprototypen enthalten. Mittlerweile habe ich auch ein Toll installiert(Dependency Walker) um die DLL Funktionen lesen zu können. Jetzt meine Aufgabe ist einigen Methoden aus C-DLL für eine Berechnung aufzurufen. Ich habe dafür diese Methoden als native Methoden in meiner Java Programm deklariert: package triangleberechner; public class Triangulationsberechnung { static{ System.loadLibrary("libDMASCProg"); } public static void main(String[] args) { int drob = 1; int dobj = 1; String initial = "null"; boolean rohdatenzeile = true; boolean zeit = true; byte[] input64 = new byte[32]; try{ System.out.println("Ausführung von java Programm mit nativen Methoden!!!"); Triangulationsberechnung triangle = new Triangulationsberechnung(); triangle._mcbe_InitBerechnung_setDebugOptions(drob, dobj, initial, rohdatenzeile, zeit); triangle._mcbe_RechneMitZeile(input64); } catch(UnsatisfiedLinkError ex){ ex.printStackTrace(); System.out.println("Message:" + ex.getMessage()); System.out.println("CRASHBOOMBANG!!!"); } } public native <AnsiString> void _mcbe_InitBerechnung_setDebugOptions(int bitmask_chkbox_drob, int bitmask_chkbox_dobj, AnsiString filter_text, boolean chkbox_n_rohdatenzeile, boolean chkbox_zeit); // (struct mcb_dbgopt_S o) public native void _mcbe_RechneMitZeile(byte[] input64); //(unsigned char * input64) } Aus diesem Java Programm könnte ich meine Header Datei für C erstellen: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class triangleberechner_Triangulationsberechnung */ #ifndef _Included_triangleberechner_Triangulationsberechnung #define _Included_triangleberechner_Triangulationsberechnung #ifdef __cplusplus extern "C" { #endif /* * Class: triangleberechner_Triangulationsberechnung * Method: _mcbe_InitBerechnung_setDebugOptions * Signature: (IIZZ)V */ JNIEXPORT void JNICALL Java_triangleberechner_Triangulationsberechnung__1mcbe_1InitBerechnung_1setDebugOptions (JNIEnv *, jobject, jint, jint, jobject, jboolean, jboolean); /* * Class: triangleberechner_Triangulationsberechnung * Method: _mcbe_RechneMitZeile * Signature: ([B)V */ JNIEXPORT void JNICALL Java_triangleberechner_Triangulationsberechnung__1mcbe_1RechneMitZeile (JNIEnv *, jobject, jbyteArray); #ifdef __cplusplus } #endif #endif Bzw. meine Wrapper C Datei schreiben, obwohl die nicht ganz fertig geschrieben. /* * Triangleberechner.c * * Created on: 17.03.2009 * Author: SBX825 */ #include <jni.h> #include "triangleberechner_Triangulationsberechnung.h" #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> //#include <d_cal12.h> //#include <cpp_asrt.h> //#include <d_calopt.h> //#include <d_calpdf.h> //#include <dyn_d_cal12.h> //#include <tmp_pdf.h> JNIEXPORT void JNICALL Java_triangleberechner_Triangulationsberechnung__1mcbe_1InitBerechnung_1setDebugOptions (JNIEnv *env, jobject obj, jint in_int1, jint in_int2, jstring in_str, jboolean in_bool1, jboolean in_bool2) { char buf[128]; // Java String in C-String konvertieren und an C-Variablen zuweisen const char *c_string = (*env)->GetStringUTFChars(env, in_str, 0); printf("%d %d %s %d %d\n", in_int1, in_int2, c_string, in_bool1, in_bool2); //_mcbe_InitBerechnung_setDebugOptions(in_int1, in_int2, c_string, in_bool1, in_bool2); //struct mcbe_dbgopt_S o strcpy (buf, c_string); strcat(buf, "Greeting from C!"); (*env)->ReleaseStringUTFChars(env, in_str, c_string); return ;//(*env)->NewStringUTF(env, buf); } JNIEXPORT void JNICALL Java_triangleberechner_Triangulationsberechnung__1mcbe_1RechneMitZeile (JNIEnv *env, jobject obj, jbyteArray jarr) { // Der Array muss mit seiner Länge übernommen werden //jsize l = (*env)->GetArrayLength(env, jarr); jbyte *input64 = (*env)->GetByteArrayElements(env, jarr, 0); /*Aufruf der Methode mcbe_1RechneMitZeile in der Bibliothek Triangulationsberechnung.dll * dieses C-File muß in der gleichen Bibliothek zur Verfügung stehen. * */ //jarr = (*env)->_mcbe_1RechneMitZeile(input64); //jarr = (*env)->_mcbe_RechneMitZeile(input64); // Speicher freigeben und rückkopieren des Arrays (*env)->ReleaseByteArrayElements(env, jarr, input64, 0); } Anschließend habe ich auch mein DLL für java der den Zugriff auf ermöglichen kann erstellt. Den habe ich ich auch in meiner java klasse geladen und das funktioniert denn über printf() könnte ich ein Output in der Konsol lesen. Alle Dll und Header von C sind auch unter Eclipse eingebunden. Aber mein Ziel ist das zu bekommen was in dem Rumpf von C-Methoden implementiert ist. Meine Frage jetzt ist wie mache ich die Aufrufe von benötigen Methoden aus C-Dll? Wo paasiert das und was brauche ich dafür? Brauche ich eigentlich die C-Header in meiner C-Wrapper zu inkludieren? Ich hoffe wirklich auf eure Hilfe. Vielen Dank im voraus. Zonbléou

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...