Zum Inhalt springen

Zonbléou

Mitglieder
  • Gesamte Inhalte

    35
  • Benutzer seit

  • Letzter Besuch

  1. Hallo, ich hätte noch eine Frage. wie holt man die Ergebnisvariablen aus einer DLL nach Java? Nach der Berechnung sind meine Ergebnisse in Variablen in der DLL gespeichert. Mfg. Z.
  2. Hallo meinen Herrn, ich dachte mit dem Projekt muss ich aufhören aber es ist nicht einfach. Ich sehe schon das Ende nur fehlt es mir die Ergebnisse. Bei meinen letzten Recherchen habe ich gemerkt, dass die Ergebnisse sind normalerweise in einer anderen Dll abgelegt. Diese sind in Ergebnisvariablen gespeichert. Diese Variablen mussen jetzt für die Bewertung zum Java Programm geholt werden. Ich wende mich noch an dich falls ich die richtige Implementierung nicht finde. Danke im voraus. Zonbléou
  3. Hallo, jetzt muss ich eigentlich mit dem projekt aufhören. Der Programmcode sollte normalerweise nicht veröffentlich werden, aber ich war stark am Suchen einer Lösung und habe deswegen alles das vergessen. Sorry! Ich habe jetzt versucht alle abhängigen Dll oder Bibliotheken im Adressraum des Processes zu laden. Alle Adressen könnten gelesen werden. Der Aufruf meiner Methode: pFn(input64); führt nicht mehr zu Programmabstürzt. Trotzdem habe ich keine Ergebnisse mit nur 0 im meinem Array. ich gehe davon aus, dass die Deklaration von meinem input64 auf der Wrapper Seite ist nicht richtig. So habe ich deklariert: env und jarr kommen von dem Parameter Liste meiner importierte Methode. Da bin mir nicht ganz sicher, ob es so sein soll. Danke für die Mitarbeit. Trotzdem habe ich was gelernt. Zombléou.
  4. Hallo, bevor ich meine Fragen stelle muss ich erst was versuchen. Ich denke ich weiss wirklich nicht wie ich weiter kommen kann. Ich kann mich nur auf ihre Unterstütznug verlassen. Ich muss jetzt versuchen die Fragen zu beantworten. Erstens habe ich versucht das Laden der Dll mit LoadLibrary(), die Methode die Maindll und die abhängigen Dll mitlädet und initialisiert. Ich kann damit die Dll nicht laden da weder die Adresse der dll noch die der Methode in dll könnte gefunden werden. Ich habe aus der MSDN gelesen, dass es noch eine die LoadLibraryEx() gibt, die die dll laden kann. Aber diese braucht mindestens drei parameter. Deswegen war ich dabei alles zu probieren. jetzt habe ich den Code so geändert So nächstes Wenn ich den Aufruf //pFn(input64); auskommentiere, dann kann ich die Adresse der Dll und der aufzurufenden Methode lesen. Das kann ich mit dem Dependency Walker nach Korrektheit der Adressen prüfen. Mit dem Aufruf von pFn(input64); sehe ich nicht in der Konsole und dann wird dieser Fehler Report generiert Werte von input64 Auf der Java Seite erzeuge ich einen Array der so aussieht Letzte frage Ich versuche hier die Implemntierung der Methode aus C mit zu kopieren. Ich hoffe es wird nicht zu viel Arbeit für dich zum Anschauen sein. ich habe ansonsten keine richtige Dokumentation dazu. Hier die Implementierung . ich habe heute aus MSDN gelesen, dass diese LoadLibrary erfordert ein paar Sachen wie: Linker Coredll.lib, ich habe auf meinem System gesucht und könnte keine Coredll.lib finen, kann es sein, dass es daran liegt? Wenn ja wie Schaffe ich das? Google könnte mir nicht helfen. Danke für die weiter Ideen. Zonbléou
  5. Hallo, könnte mein Programm bis jetzt immer noch nicht zum laufen bringen. Wenn ich die NewByteArray/SetByteArrayRegion Methoden einbaue dann kriege ich die fehlermeldung, ich bin nicht in Benutzung von Structure oder Union. So sieht mein Programm endlich aus: HINSTANCE hIns; pFunc pFn; hIns = LoadLibraryEx("C:\\Dokumente und Einstellungen\\SBX825\\Desktop\\Rohdata\\DetSys_001", NULL, DONT_RESOLVE_DLL_REFERENCES); printf("AddressDll %d\n", hIns); printf("LoadLibrary: %d\n", GetLastError()); if(hIns) pFn = (pFunc)GetProcAddress(hIns, "_mcbe_RechneMitZeile"); printf("AddressFunc %d\n", pFn); printf("LoadLibrary: %d\n", GetLastError()); printf("%d\n", pFn(input64)); FreeLibrary(hIns); Ich lasse das laufen und ich kriege diese Fehlermeldung: # # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0adc18f5, pid=4076, tid=3440 # # Java VM: Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode) # Problematic frame: # C [DetSys_001.dll+0x18f5] # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # Vielleicht kann mir jemand dabei helfen. Zonbléou
  6. Hi, wie baut sich diese Funktion auf? oder wie macht man das? Kannst Du mir ein Bsp. geben? Danke
  7. Hallo, ich habe jetzt keine Ideen mehr. Das stimmt das was Du sagst wegen vergenes Problem, aber wie kann ich effizient das Problem lösen? Hast Du vielleicht eine Idee oder eine Funktion die ich benutzen kann? Kannst Du mir die geben? Die Funktion bekommt einen Array von Werten rechnet und gibt das Ergebnis zurück. Brauche ich noch eine zusätliche Implementierung in meiner Datei? Danke
  8. Hi, So mit LoadLibrary() werden die Dll die Abhängigkeiten zu den anderen Dll haben nicht geladen. Die nächste Möglichkeit ist diese Methode LoadLibraryEx() die drei Parameter erwartet. Damit habe ich zu mindestens die Adresse der Dll und die Methode ausgeben können. input64 ist ein Parameter der Methode _mcbe_RechneMitZeile(). Jetzt habe ich die Implementierung wie folgt versucht input64 bekommt Array Werte auf Java Seite. Ich kann hier leider keine Ausgabe in der Consol mit printf auf pFn(input64) machen, weil die Methode _mcbe_RechneMitZeile hat ein void als Rückgabe Typ. Die Ausführen gibt keine Fehlermeldung und zeig auch nichts. Wie kann ich jetzt testen, dass mein Aufruf wirklich funktioniert? Danke. Z.
  9. Hallo, ich habe eine Frage die sich auf java, jni/jna, c/c++ bezieht. Kann mir jemand diese Frage antworten? Ich habe es soweit bis fast der letzte Punkt wo ich blockiert bin. Ich will die C-DLL Methoden in java aufrufen. Soweit habe ich das ganze gebaut bis die dlls geladen. Jetzt versuche ich die Methoden aufzurufen und ich kriege Fehlermeldung wie folgt Hier ist meine Implementierung: Vielen Dank im voraus. Zonbléou
  10. Hi, es waren die . Da es in dem zur Verfügung gestellten Ordner nicht gibt, habe ich gedacht es sollte was mit Windows Funktionalitäten zu tun haben. Danke noch Mal. Z.
  11. Guten morgen, danke erst, ich wollte die Antwort von gestern Abend probieren. Die dll von java die ich ausprobiert habe liegt in dem selben Ordner wie meine d_cal12.dll trotzdem kann mein programm die finden und die Adresse ausgeben. Aber meine d_cal12 wird nicht gefunden. Wegen Dependency Walker Abhängigkeiten, ich habe die fehlende Dll haute aus Internet heruntergeladen, leider meine MPR.DLL ist nicht vollständig und der Dependency Walker weist diesen Fehler auf:Warning: . Mein printf("%d", GetLastError()); gibt 126 aus. Danke. Z.
  12. Hi, der Aufruf von gibt als Fehler, das der Pfad oder Verzeichnis nicht gefunden wird. Jetzt habe ich irgendeine npjava11.ddl aus java jre genommen und genauso in meinem eclipse eingebaut wie die anderen c-dll. Dann habe ich eine Methode aus dieser npjava11.dll mit Dependency-walker gelesen und die Adressen von der Dll und die Methode abgefragt. Ich könnte die beiden Adressen lesen. ich weiss jetzt nicht was mit den anderen c-dll los ist? Danke. Z.
  13. Hallo, ich denke etwas stimmt nicht bei meinen Dlls, Ich habe es jetzt so geändert Bei printf("%d" , hIns) bekomme ich ein 0 und bei printf("%d" , pFn) bekomme ich eine Zahl: 112223216 egal, ob ich die andere Methode nehme. Wenn ich irgendeine Dll aus jre nehme dann bekomme ich eine Zahl != 0. Alle meine C-dll geben ein 0 zurück. ich kann das jetzt nicht interpretieren. Naja vielleicht gibt irgendwann eine Lösung oder auch nicht. Danke. Z.
  14. Hi, ich habe es so geändert: und ich bekomme ein 0 zurück. Soll das heißen, dass die Methode nicht gefunden wurde? Z.
  15. Hallo, ich habe noch eine kleine Frage. Meine implementierung gefällt mir nicht ganz aber ich weiss auch wie man das richtig macht. So habe ich das gemacht. Mein printf() um die Adresse der Methode auszugeben, weiss nicht, ob richtig? Sagen Sie mir was falls eine richtige Lösung gibt. Danke. Z.

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...