JNI: dll erzeugen

Status
Nicht offen für weitere Antworten.

slalomlooser

Mitglied
Hallo!!

Ich bin grad dabei mir die Grundlagen von JNI anzueignen!!

Ich habe soweit den Java-Code in HelloWorld.java geschrieben, diesen compiliert, daraus die HelloWorld.h generiert und anschließend den C-Code in HelloWorld.c geschrieben.

Jetzt möchte ich die dll erzeugen, die ich dann ausführen kann!

dies versuche ich in der Kommandozeile mit:
-Ic:\j2sdk1.4.2_06\include -Ic:\j2sdk1.4.2_06\include\win32 -LD HelloWorld.c -FeHelloWorld.dll
Dabei bekomme ich den Fehler: "The filename, directory name, or volume label syntax is incorrect."

Mein C-Code in HelloWorld.c sieht folgenderweise aus:

Code:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
 
JNIEXPORT void JNICALL 
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
    printf("Hello World!\n");
    return;
}

HelloWorld.h

Code:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    print
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_print
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

Könnte es sein, dass das Problem darin liegt, dass ich in Java eine Package-Struktur habe, die im Methodennamen in C fehlt?
Oder spielt der Ordner, in der die Kommandozeile beim Ausführen steht eine Rolle? Ich habe sie im Ordner der Dateien stehen, nicht auf Workspace-Ebene...
Oder gibt es bessere/andere Möglichkeiten in WinXP dlls aus meinen Dateien zu erzeugen??

Ich habe auch das Visio-Studio, dort aber leider bis jetzt nur Möglichkeiten gefunden C++-Code zu compilieren. Über Tipps wie ich damit mit dem obenstehenden C-Code eine dll generieren kann, wäre ich auch sehr dankbar!

Ich muss dazu sagen, dass ich von C/C++ leider nicht wirklich Ahnung habe!

Ich hoffe, ihr könnt mir weiterhelfen, denn ich steh grad ziemlich auf dem Schlauch!!

Viele Grüße,
Hanna
 

Murray

Top Contributor
slalomlooser hat gesagt.:
dies versuche ich in der Kommandozeile mit:
-Ic:\j2sdk1.4.2_06\include -Ic:\j2sdk1.4.2_06\include\win32 -LD HelloWorld.c -FeHelloWorld.dll
Dabei bekomme ich den Fehler: "The filename, directory name, or volume label syntax is incorrect."
Da scheint etwas zu fehlen; das sind doch nur Compiler-Optionen, nicht aber die komplette Zeile. Verwendest Du den Microsoft-Compiler? Dann müsste die Zeile auf jeden Fall mit "cl" beginnen.
Versuch mal
cl /Ic:\j2sdk1.4.2_06\include /Ic:\j2sdk1.4.2_06\include\win32 /LD HelloWorld.c /FeHelloWorld.dll

slalomlooser hat gesagt.:
Könnte es sein, dass das Problem darin liegt, dass ich in Java eine Package-Struktur habe, die im Methodennamen in C
Das würde nicht zu diesem Problem führen, sondern zu einem "UnsatisfiedLinkError" zur Laufzeit (also erst dann, wenn das Java-Programm läuft; die DLL lässt sich problemlos erstellen).
Wenn Du die C-Signaturen mit javah erzeugt hast, dann sind alle Package-Informationen enthalten. Wenn Du allerdings das Package im Java-Code nachträglich geändert hast, dann solltest Du lieber nochmal javah anwenden, anstatt die Signaturen manuell nachzuziehen - das wäre ziemlich fehlerträchtig.
 
G

Guest

Gast
Dies habe ich ausprobiert, jedoch bekomme ich dann folgende Fehlermeldung:
"'cl' is not recognized as an internal or external command, operable program or batch file."

Ja, ich will den Mircosoft-Compiler verwenden. Muss ich den expliziet irgendwo starten? Welchen Pfad muss meine Kommandozeile beim Ausführen des cl....-Befehls haben?

Ich hoffe, ihr könnt mir weiterhelfen!!!
 

slalomlooser

Mitglied
Problem gelöst!!

Zwar hab ich es mit der Kommandozeile nicht geschafft eine dll zu erzeugen, es aber letztendlich mit dem Visio Studio doch geschafft!

Danke für eure Hilfe!!
 
G

Guest

Gast
Für die Freunde der Kommandozeile liefert M$ normalerweise im Visual Studio ein Batch-File, mit dem man die Umgebungsvariablen entsprechend setzen kann (z.B. C:\programme\MicrosoftVisualStudio7\Tools\vsvars32.bat).
Das führt man aus, und danach sollten die notwendigen Umgebungsvariablen passend gesetzt sein.
 
G

Guest

Gast
Wenn du GCC auftreiben kannst:
Code:
gcc -shared -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -o HelloWorld.dll HelloWorld.c
 

thE_29

Top Contributor
Hast du jemals ne DLL mit gcc zum Laufen gebracht?

Ich nicht!

Weder unter Linux noch unter Windows!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Aus einer jar-Datei eine exe-Datei erzeugen lassen Allgemeine Java-Themen 37
W Aggregierter JaCoCo.exec erzeugen Allgemeine Java-Themen 0
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
S Klickbare Stacktraces selber erzeugen..? Allgemeine Java-Themen 9
I OpenPDF (ehem. iText) will kein PDF mit CMYK only erzeugen Allgemeine Java-Themen 6
J Runable jar erzeugen Allgemeine Java-Themen 2
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
temi Valides Dreieck erzeugen Allgemeine Java-Themen 6
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
dereki2000 Windows Benachrichtigung erzeugen Allgemeine Java-Themen 2
J In einem Set doppelte Elemente erzeugen Allgemeine Java-Themen 4
F Objekte erzeugen Allgemeine Java-Themen 1
M Variabe a[i] erzeugen Allgemeine Java-Themen 8
Meeresgott Kapselung Tabellen der Datenbank erzeugen. Allgemeine Java-Themen 7
Thallius String erzeugen sehr langsam Allgemeine Java-Themen 16
L ICS-Kalenderdatei aus PDF erzeugen Allgemeine Java-Themen 0
A Jasper Report Performance bei PDF erzeugen Allgemeine Java-Themen 0
F Java Spintax: Alle Kombinationen Erzeugen Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
H Vektor rekursiv erzeugen Allgemeine Java-Themen 2
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
V 2D-Grafik BufferdImage aus gif Datei in Jar erzeugen geht nicht. Allgemeine Java-Themen 6
R Aus Eclipse Projekt ein UML erzeugen Allgemeine Java-Themen 3
G Texte erzeugen Allgemeine Java-Themen 3
R Großes Hash-Set erzeugen Allgemeine Java-Themen 12
P Excel-Sheets erzeugen aus Report Allgemeine Java-Themen 2
Ollek Barcode mit Barcode4J erzeugen - Exception Allgemeine Java-Themen 4
P Arrays erzeugen Allgemeine Java-Themen 5
G Strings erzeugen Allgemeine Java-Themen 20
C QR-Codes erzeugen. Allgemeine Java-Themen 43
M Input/Output Datei erzeugen funktioniert nicht (immer) vom .jar aus Allgemeine Java-Themen 5
T "Platzsparende" und "schnelle" Indizes erzeugen Allgemeine Java-Themen 10
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
E Objekt beim Erzeugen in ArrayList Allgemeine Java-Themen 9
D 2D-Grafik Funktionierende .jar datei mit Images (jpg) erzeugen Allgemeine Java-Themen 2
S Schnell eine fortlaufende nummer erzeugen SQL, kein Primkey Allgemeine Java-Themen 8
M Graphen erzeugen und visualisieren, jgraph oder was was anderes? Allgemeine Java-Themen 2
M Klassen Zugriff auf getMethode ohne Klasse zu erzeugen Allgemeine Java-Themen 6
J Verschiedene Klassen als "Object" in ArrayList und dann in for-Schleife erzeugen!? Allgemeine Java-Themen 2
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
Y Eclipse ppt Folie erzeugen + text plazieren Allgemeine Java-Themen 4
G log4j File erzeugen und Pfad bestimmen Allgemeine Java-Themen 3
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
A HashCode von DatagrammPacket(content) erzeugen. Allgemeine Java-Themen 3
A auführbare Jar erzeugen mit ant Allgemeine Java-Themen 5
D Browser-Objekt erzeugen Allgemeine Java-Themen 8
Developer_X Java ton erzeugen Allgemeine Java-Themen 3
D character kodierung, barcode für barcode font erzeugen Allgemeine Java-Themen 4
D Worddocumente erzeugen Allgemeine Java-Themen 4
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
S JUnit: Erzeugen einer IOException Allgemeine Java-Themen 9
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
A AES Key aus Text erzeugen Allgemeine Java-Themen 2
G JFrame Icon selbst erzeugen Allgemeine Java-Themen 2
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
F Klasse vorhanden - wie daraus Objekt erzeugen Allgemeine Java-Themen 8
C PDF erzeugen Allgemeine Java-Themen 3
Landei Objekte ohne Konstruktoraufruf erzeugen Allgemeine Java-Themen 7
F Zufallszahl erzeugen Allgemeine Java-Themen 4
P Objekt einer Klasse erzeugen, die als String vorliegt Allgemeine Java-Themen 3
multiholle Objekt einer Klasse anhand eines String erzeugen Allgemeine Java-Themen 3
M odt-Datei erzeugen Allgemeine Java-Themen 6
G File zur Laufzeit erzeugen Allgemeine Java-Themen 4
G Windows Pipe erzeugen Allgemeine Java-Themen 12
A Wie eine Seriennummer erzeugen und auswerten? Allgemeine Java-Themen 11
G erzeugen von "ArrayList<Integer>[][]" Allgemeine Java-Themen 7
T Log4J: Bei Programmstart immer eine neue LogDatei erzeugen Allgemeine Java-Themen 9
S Zweidimensionales Array neue Zeile erzeugen Allgemeine Java-Themen 3
A Objekt in einem Array erzeugen Allgemeine Java-Themen 6
Q Objekte durch Reflection erzeugen Allgemeine Java-Themen 18
V Enums aus Datei-Einträgen erzeugen? Allgemeine Java-Themen 6
M KML Datei automatisch erzeugen Allgemeine Java-Themen 3
H Problem mit erzeugen eienr neuen Session Allgemeine Java-Themen 3
G zweierKompliment erzeugen Allgemeine Java-Themen 12
L Objekt erzeugen Allgemeine Java-Themen 2
R Jasper iReport erzeugen Allgemeine Java-Themen 7
MQue über iBatis Tabellen erzeugen Allgemeine Java-Themen 4
V Aus String -> Objekt einer Klasse erzeugen Allgemeine Java-Themen 7
P UML erzeugen Allgemeine Java-Themen 3
M wav datei/ ton erzeugen Allgemeine Java-Themen 4
M eigenen Desktop erzeugen Allgemeine Java-Themen 3
S Asymmetrisches Array dynamisch erzeugen Allgemeine Java-Themen 4
T Objekte dynamisch über eine Methode erzeugen Allgemeine Java-Themen 10
X PowerPoint Files in Java erzeugen Allgemeine Java-Themen 2
M File im memory erzeugen Allgemeine Java-Themen 5
R Object Dynamisch erzeugen (Reflection API) Allgemeine Java-Themen 22
B Grafik erzeugen in java Allgemeine Java-Themen 2
P Image erzeugen Allgemeine Java-Themen 7
S Uml erzeugen (nicht: JavaCode-Erzeugung) Allgemeine Java-Themen 4
G Reflection objekt mit generics erzeugen Allgemeine Java-Themen 5
L iText: Mehrseitiges PDF erzeugen Allgemeine Java-Themen 9
G UML automatisch erzeugen lassen Allgemeine Java-Themen 2
S Demoversion erzeugen? Allgemeine Java-Themen 17
H In Testklasse Objekte erzeugen und in einer Schleife ausgebe Allgemeine Java-Themen 4
G Problem mit ArrayList bzw. dem erzeugen derer Allgemeine Java-Themen 2
T hashCode() erzeugen. Allgemeine Java-Themen 11
G Queue erzeugen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben