Eclipse dlls bauen

Mortal_Shadow

Aktives Mitglied
Hi,

ich bin mir nicht sicher ob das hier richtig ist.
Ein mod kann es im zweifelsfall gerne in ein passenderen Bereich verschieben.

Ich versuche gerade .dll mit java zu nutzen.
Dabei beutze ich dieses Tutorial.
Allerdings scheitere ich gerade dabei mit Eclipse meine .dll zu erzeugen.
Code:
#include <jni.h>
#include "helloworld_HelloWorld.h"
#include <iostream>

using namespace std;

JNIEXPORT void JNICALL Java_helloworld_HelloWorld_callNative (JNIEnv *env, jobject obj) {

   cout << "Mir geht es gut: Hello World!" << endl;

}
ist hierbei meine cpp Datei.
Eclipse liefert mir daraus allerdings eine .so und eine .o - Datei.
Was soll das und was mache ich dagegen?
 

Mortal_Shadow

Aktives Mitglied
Ja, hat mir google auch gesagt.
Allerdings läuft auf meinem Rechner Windows Vista.
Und ich würde gerne eine .dll erzeugen mit Eclipse...
Aber ich habe es nicht geschafft da irgendwas umzustellen.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Bin kein G++- und MinGW-Experte, und ich weiß nicht, was da mit der def-Datei und den magischen Funktionen des CDT alles abläuft, aber du kannst mal versuchen,
g++ -o Name.dll Name.o
auszuführen, und schauen, ob da eine verwendbare DLL rauskommt. Falls ja, kann man (d.h. jemand der da Bescheid weiß) vielleicht noch rausfinden, wie man das in die Eclipse Toolchain reinwurstet.
 

Mortal_Shadow

Aktives Mitglied
MinGW aus cmd heraus kompilieren zu lassen war keine gute Idee.
Zuerst meckerte er, das jni.h nicht gefunden wurde.
Als ich das dann in das MinGW verzeichnis kopiert habe und kompilieren wollte, kamen
hunderte von Errormeldungen, das die jni.h fehlerhaft sei.
 

Marco13

Top Contributor
Eigentlich sollte nur die schon existierende .o zu einer DLL gelinkt werden (bin aber nicht 100% sicher, ob das geht). Ansonsten müßte man natürlich noch die passenden Include-Verzeichnisse angeben (wo die jni.h drin ist).
 

Mortal_Shadow

Aktives Mitglied
Nunja, wenn ich mache cd C:\Datei\Pfad\
und dann g++ -o hello.dll hello.o
Kommt als error:
Code:
Ellenlanger\Dateipfad:main.c:(.text+0xd2): undefined reference to 'WinMain@16'
collect2: Id returned 1 exit status
 

Marco13

Top Contributor
Ich kenn' es nur so, dass man (entweder einfach auf "Compile" klickt oder) einfach den gcc mit den sourcen (und allen includes und libs) startet und fertig :bahnhof: Vielleicht kennt sich ja jemand mit MinGW und gcc und insbesondere deren Kombination mit CDT besser aus und kann näheres dazu sagen.
 

Siassei

Bekanntes Mitglied
Hast du folgendes auch wirklich gemacht?
nicht so wichtig. Als Location wird hier also nur noch die “cp” Datei angegeben, die sich im “/MSYS/bin”-Verzeichnis befinden müsste. Als “Working Directory” geben wir an:

${workspace_loc:/HelloWorldDLL/Release}

und als Arguments:

*.dll ${workspace_loc:/HelloWorld/bin}
 

Mortal_Shadow

Aktives Mitglied
So, der link von dir war nochmal das tutorial das ich schon in meinem ersten Post angegeben habe.
Der zweite, versuchte das selbe, wie das, was Marco13 vorschlug.
Eingetragen hatte ich auch alles, der Fehler lag wo ganz anders.

Und zwar habe ich ebenfalls Borland Delphi installiert.
Dieses ist auch in der Pfad-Variable und besitzt einen maker.exe.
g++ hat nun auf den delphi-maker zugegriffen.
Die Lösung ist, wenn ich mit c++ arbeite, den Pfad nach c++ zu setzen und analog für delphi.
Nuja, trotzdem danke für eure Mühe.
 

Ähnliche Java Themen


Oben