Chargement dans dll.

sikstar Messages postés 12 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 10 janvier 2005 - 1 avril 2003 à 16:59
sniper_hma Messages postés 7 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 septembre 2007 - 28 avril 2007 à 13:52
Bonjour, j'programme en java swing.

J'voudrais créer un prog de gestion pour mon interface k8000 de chez velleman, j'ai réussi à faire ce prog en vb, mais pas en java.

En fait les fonctions de base sont définies dnas une dll et sous java je n'arrive pas a appeler ces fonctions :(

Kk'un pourrait m'aider svp?

exemple:

private void start_k8000()
{
//Action ki va chercher start_k8000 dans la dll
}

Merci

BuBYE

6 réponses

CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
2 avril 2003 à 20:54
Il faut que ta methode
private void start_k8000()

soit native ainsi sa définition est dans une DLL et elle appelle
ta DLL

Core Breaker :)
0
sikstar Messages postés 12 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 10 janvier 2005
3 avril 2003 à 19:40
ui j'ai appris ca et bien j'l'ai fait mais ca marche tjrs pas :(

voila ske j'ai fait :

static { System.load("k8d"); }

public static native void Start_k8000();

Kan je compile, pas d'erreur, et kan j'exécute ... erreur :

java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: k8d

Idée?

Tu penses pas ke la dll doit etre d'un format bien spécifique (pour le JNI) et ke leur driver dll ne l'est pas ?

Merci

BuBYE
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
3 avril 2003 à 19:54
oui bien sur
il faut compiler le code java et ensuite générer le code C++ avec javah pour en faire une dll.
Sinon ton code java est bon

Core Breaker :)
0
sikstar Messages postés 12 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 10 janvier 2005
4 avril 2003 à 09:19
UI mais ma dll est déjà compilée (c leur driver) et je n'ai pas la source.
Et j'me demande pourkoi je n'arrive pas a charger les fonctions si mon code est bon?

J'ai kan meme réussi a chopper les sources:

voila un exemple dans le fichier *.c*

/*IO CONFIGURATION PROCEDURES*/
__declspec( dllexport ) void ConfigAllIOasInput(void);
__declspec( dllexport ) void ConfigAllIOasOutput(void);
__declspec( dllexport ) void ConfigIOchipAsInput(int Chip_no);
__declspec( dllexport ) void ConfigIOchipAsOutput(int Chip_no);
__declspec( dllexport ) void ConfigIOchannelAsInput(int Channel_no);
__declspec( dllexport ) void ConfigIOchannelAsOutput(int Channel_no);

en voila un du fichier *.h*

/*IO CONFIGURATION PROCEDURES*/
extern void ConfigAllIOasInput(void);
void (*ConfigAllIOasOutput)(void);
extern void ConfigIOchipAsInput(int Chip_no);
extern void ConfigIOchipAsOutput(int Chip_no);
void (*ConfigIOchannelAsInput)(int Channel_no);
extern void ConfigIOchannelAsOutput(int Channel_no);

Alors je dois faire koi?

Compiler le fichier *.h* avec javah? et ensuite ?

Merci

BuBYE

sik
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
8 avril 2003 à 01:46
Désolé je me suis mal fait comprendre.

Déja tu dois compiler ta classe java avec la méthode native.
ensuite tu utiliser javah pour produire le code c++ qui va te servir à faire une dll que la machine virtuelle java va utiliser.
Avec javah tu produit un fichier .cpp (ou .c je ne sais plus de toute façon le résultat et le même) et .h. Tu ne dois modifier que le .cpp. Tu sois ensuite le .cpp et le .h dans un projet pour en faire une dll.

Dans le source .c tu utilise ensuite les fonctions d'appel de ta dll qui fait office de driver (celle que tu m'a montrer). Je ne sais pas comment on doit les utiliser. Je pense tout de même que tu auras besoin d'un fichier .lib ou d'un fichier .def pour faire la liaison avec ta dll driver.

Ainsi la machine virtuelle java lorsque tu appelles la méthode native, appellera la fonction que javah a produit et cette fonction c appellée utilisera les fonctions de ton driver (ta DLL).

Situ veux:
Si tu me fait une fonction en c qui permette d'utiliser convenable ton drivers ou les fonctions qui sont censé être appelée par les méthodes java (en me fournissant en plus la classe java et les différente fonctions c appelées par les différentes méthode en m'indiquant les correspondances), je te produirait tour les sources nécessaires pour la communication avec ta dll.

Alors, transmets moi tout ça à metaos@free.fr

Core Breaker :)
0
sniper_hma Messages postés 7 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 septembre 2007
28 avril 2007 à 13:52
0
Rejoignez-nous