PDA

View Full Version : [JAVA] DLL


heavymasa
19-10-2005, 10:18
Salve a tutti, sono nuovo!
mi trovo a programmare un dispositivo di domotica e mi hanno fornito delle dll che dovrebbero aiutarmi ma non ho esperienza in cose del genere.In pratica è un dispositivo che si interfaccia al pc con la seriale!
In pratica questa azienda mi ha mandato 3 file .dll e 2 .h e quindi la documentazione dove in pratica vengono riportate tutti i nomi delle funzioni di cosa bisogna passargli e cosa restituiscono!
Ho chiesto a loro se potevo usare la dll in java..di seguito la risposta :
"Buongiorno, le DLL le può usae con qualunque linguaggio riscrivendo quelli che in C sono i prototipi di funzione nello stile del suo linguaggio, e mantenendo le convenzioni di chiamata delle funzioni C.

Queste stesse DLL sono gia state utilizzate da altri clienti con linguaggi diversi. "

mmm...non so cosa volessse dire!
mi è capitato per esempio di lavorare cn un'altra ditta del genere e questi mi avevano mandato un file jar e una dll...io includevo il jar nel progetto ed ero a posto!
Qui invece non riesco a capirci proprio niente!
mi date un mano per favore??? :mc: :mc: :mc:

fgmac
19-10-2005, 10:31
Cerca JNI, e' il meccanismo per interfacciare un programma in java con una dll.
Tuttavia e' un po' complessa la cosa.

heavymasa
19-10-2005, 10:42
ma per fare questa cosa mi servono i sorgenti o le dll ?

0rph3n
19-10-2005, 15:04
Qui (http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/index.html) trovi spiegato tutto!

Comunque bastava googlare JNI e tempo 5 minuti trovavi sta pagina!


EDIT: fixato il link :stordita:

heavymasa
19-10-2005, 15:53
Qui (http://java.sun.com/docs/book/tutorial/native1.1/stepbystep/index.html) trovi spiegato tutto!

Comunque bastava googlare JNI e tempo 5 minuti trovavi sta pagina!

a parte che il tuo link nn va...cmq... ho gia letto qualcosa in giro, anche sul sito della sun!!!
volevo solo avere qlc dritta visto che non mi sembra una cosa cosi semplice... o almeno x me!

0rph3n
19-10-2005, 16:02
mi scuso per il link errato, avendo fatto copia/incolla non so come possa essermi venuto sbagliato! :confused:
comunque se non ho capito male (cosa che invero potrebbe benissimo essere), da quello che c'è scritto nella pagina che ho linkato ti dovrebbero bastare le dll!

71104
19-10-2005, 16:48
sei proprio costretto a programmare in Java? perché non usare piuttosto il C o al limite il C++ se ti trovi bene con le classi?

heavymasa
20-10-2005, 15:20
sei proprio costretto a programmare in Java? perché non usare piuttosto il C o al limite il C++ se ti trovi bene con le classi?

sto provando in c in effetti xè in java mi sembra una cosa lunga!!!
uso il visual c++ ... come devo fare????
Sono un po arruginito cn il c ( pensavo che andasse la printf in applicazioni windows per intenderci)!!!
dunque...ho messo il file .lib dove va messo e lho incluso nel progetto,ho messo i 2 file .h nell'header e nel main ho incluso i 2 file e non mi da errori!
ora ho questa funzione :

DWORD APIENTRY SappGetDllVersion(); nel file.h !!!

cm faccio a stampare il valore che mi torna da questa funzione nel mio programma??

71104
20-10-2005, 16:56
che intendi per stampare? mostrare in una finestra? in una message box? o stampare su una console? hai provato innanzitutto a vedere se il valore che ti ritorna è corretto?

heavymasa
20-10-2005, 18:53
che intendi per stampare? mostrare in una finestra? in una message box? o stampare su una console? hai provato innanzitutto a vedere se il valore che ti ritorna è corretto?

si scusa..intendevo dire stampare a video!!!
non ho mai usato visual studio..ho fatto un nuovo progetto win 32 e ho scelto emmm..quello nn empity ma nemmeno l'esempio hello worl!
nel main ho incluso i 2 file,nel progetto incluso la libreria e messe all loro posto le dll!!!
ora volevo provare la funzione DWORD APIENTRY SappGetDllVersion() da cui mi torna una doppia word! questa dovrebbe in pratica dirmi la versione delle dll se ricordo bene..
ho provato cn una printf ma nn mi stampa niente a video...come posso procedere?

71104
21-10-2005, 10:47
ti ripeto che ci sono molti modi di "stampare a video", più o meno complessi; dipende da quello che vuoi fare tu.
una possibilità è di scegliere di fare un'applicazione console anziché GUI, e così puoi usare la printf; altrimenti puoi mostrare una semplice message box utilizzando l'API MessageBox.
per convertire il numero ritornato e metterlo in una stringa puoi usare l'itoa oppure l'API wsprintf.

heavymasa
21-10-2005, 11:07
:doh: :doh: :doh: si scusa ..ho capito ora cio che volevi dire..dunque t posto il mio main

// Masapr.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "PICTypes.h"
#include "SappExp.h"
#include "stdio.h"
#include "iostream.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SappGetDllVersion();
return 0;

}


Io voglio stampare semplicemente cio che mi torna da SappGetDllVersion() ...non importa in che modo....voglio solo vedere se funziona!

71104
21-10-2005, 11:29
e allora metti un breakpoint e vedilo dal debugger... ;)