Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-05-2006, 14:21   #1
Trevi#18
Junior Member
 
Iscritto dal: Mar 2006
Messaggi: 8
[c++] accesso alle funzioni delle DLL

ciao, mi trovo x le mani una dll della quale conosco il prototipo delle funzioni, alle quali devo accedere da un programma c++ compilato con DevCpp... quali sono le istruzioni per importare le funzioni delle dll? vi prego datemi una mano!
Trevi#18 è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 14:50   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Trevi#18
ciao, mi trovo x le mani una dll della quale conosco il prototipo delle funzioni, alle quali devo accedere da un programma c++ compilato con DevCpp... quali sono le istruzioni per importare le funzioni delle dll? vi prego datemi una mano!
Ciao, devi innanzitutto creare una "import library".
Guarda ... io il Dev-C++ ce l'ho installato ma non lo uso (l'avevo provato) perché non mi piace .
Comunque ho visto che il Dev-C++ ha un tool chiamato "dlltool".

Dovresti provare a fare così:
- crei un file chiamato nomedll.def con dentro:
EXPORTS
nomefunzione1
nomefunzione2
...ecc...

- usi dlltool con:
dlltool -D nomedll.dll -d nomedll.def -l nomedll.a

Dovrebbe crearti la import library nomedll.a che devi poi aggiungere, per la fase di link, al tuo progetto.

Non ne sono sicuro al 100%, comunque, ripeto, prova così.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 15:25   #3
Trevi#18
Junior Member
 
Iscritto dal: Mar 2006
Messaggi: 8
si l'ho fatto, ho estratto il .def con un altro tool e poi ho creato il .a, che ho copiato nella cartella lib... ma a questo punto come faccio a chiamare le funzioni?
Trevi#18 è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 15:56   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Trevi#18
si l'ho fatto, ho estratto il .def con un altro tool e poi ho creato il .a, che ho copiato nella cartella lib... ma a questo punto come faccio a chiamare le funzioni?
Ammesso che la import library .a sia stata creata in modo corretto e che sia stata inserita all'interno del progetto, basta che dichiari nel sorgente i prototipi delle funzioni (dici di conoscerli, se ho capito bene) e poi chiami le funzioni.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 20:22   #5
Trevi#18
Junior Member
 
Iscritto dal: Mar 2006
Messaggi: 8
mhm... quindi se ho il .a nn devo caricare la dll.... ma x importare il .a nel progetto come si fa?
Trevi#18 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2006, 14:06   #6
Trevi#18
Junior Member
 
Iscritto dal: Mar 2006
Messaggi: 8
up! se volete vi posto il codice del .def x vedere se è corretto, vi prego è importante! ci devo fare la tesina!
Trevi#18 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2006, 14:14   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Trevi#18
up! se volete vi posto il codice del .def x vedere se è corretto, vi prego è importante! ci devo fare la tesina!
Vai nella dialog delle opzioni del progetto. C'è una casella di testo in cui devi mettere eventuali file oggetto, librerie, ecc... per il linker.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2006, 16:03   #8
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
se vuoi linkarla staticamente devi leggerti la documentazione del tuo IDE per capire cosa fare...io uso il visual studio e ci sono delle directories apposta per per le librerie.

se vuoi linkarla dinamicamente devi dichiararti dei puntatori a funzione che rispettino i prototipi delle funzioni che ci sono nella dll, fare una loadlibrary (e alla fine una freelibrary per scaricare la dll), poi fare la GetProcAddress su ogni puntatore a funzione dopodichè chiami con questi puntatori a funzione le funzioni della dll.
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2006, 22:51   #9
Trevi#18
Junior Member
 
Iscritto dal: Mar 2006
Messaggi: 8
perfetto sono riuscito,grazie a tutti! se a qualcuno interessasse, si deve fare in questo modo:

ammesso che la funzione da chiamare abbia ad esempio il prototipo
Codice:
long somma(long a, long b);
si definisce un tipo che identifichi le funzioni con quegli attributi e quel valore di ritorno
Codice:
typedef long (CALLBACK* LONGLONG2LONG)(long, long);
si crea poi una variabile che conterrà la dll caricata
Codice:
HINSTANCE hDLL;
e si definiscono le funzioni alle quali bisognerà poi accedere in questo modo:
Codice:
LONGLONG2LONG somma;
in questo caso, utilizzando il tipo LONGLONG2LONG definito prima.

Ora va caricata la dll:
Codice:
hDLL = LoadLibrary("MiaDLL.dll");
e da questa vanno estratte le funzioni:
Codice:
somma = (LONGLONG2LONG)GetProcAddress(hDLL,"somma");
alla fine del programma per liberare la memoria basta chiamare la funzione
Codice:
FreeLibrary(hDLL);
le funzioni così estratte si utilizzano normalissimamente come tutte le altre funzioni
Trevi#18 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2006, 09:57   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Trevi#18
perfetto sono riuscito,grazie a tutti! se a qualcuno interessasse, si deve fare in questo modo:
[...]
Sì ... ma così è 'na palla!
Se riesci a generare una import library, prova a linkare la libreria in modo statico e non dinamico, che è il metodo migliore.

Il caricamento dinamico delle dll normalmente si usa quando si devono gestire situazione particolari, ad esempio per la gestione "generica" di plug-in e cose del genere.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2006, 13:58   #11
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
mi pare di capire che tu abbia risolto...evidentemente non ne hai avuto bisogno,ma in genere quando si definisce un puntatore a funzione per chiamare una funzione di una dll si specifica anche la convenzione di chiamata...... probabilmente le funzioni della tua dll hanno come convenzione di chiamata _stdcall quindi va già bene così....... io ci sono impazzito tempo fa su una cosa simile....
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
La NASA ha confermato il supporto per il...
Sierra Space ha completato il test acust...
Ryzen 7 5800X3D pronto a tornare sul mer...
NASA: l'amministrazione Trump prosegue s...
L'Iran avrebbe acquistato un satellite p...
VivaTech compie dieci anni e raddoppia p...
Le vendite di CPU si sono ridotte di 25 ...
Starship: SpaceX ha completato lo static...
Huawei FusionSolar Roadshow 2026: l'inno...
Nuovo trailer per Street Fighter: un fil...
Sovranità sui dati: arriva la pri...
Schede video NVIDIA e AMD di nuovo su Ma...
Robot aspirapolvere, TV OLED, iPhone 17 ...
EUREKA J15 Pro Ultra super interessante ...
Intel porta l'AI nei notebook entry-leve...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v