Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-04-2011, 21:51   #1
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
[Java/C++] Interfaccia JNI con NDK

Rieccomi.
Ho scritto il mio codice C++. Anche laparte in Java con i metodi nativi sonopronti, ma ora non so come combinare il tutto. Un libro mi parla di un Registro che crea la VM, ma ne parla talmente poco che non si capisce molto.
Chi mi sa dare una mano su come creare oggetti in Java usando però le classi C++? Ho guardato in giro, la maggior parte degli esempi parlano di semplici metodi statici nativi, che secondo me sono facili da realizzare, ma con gli oggetti non si trova molto (quasi niente).
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2011, 18:14   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non cambia molto con gli oggetti. Puoi tranquillamente guardare qui:

http://download.oracle.com/javase/1....ec/jniTOC.html

in particolare:

http://download.oracle.com/javase/1....ns.html#wp4517

Nota che non puoi definire classi java usando classi C++, puoi solo istanziare classi Java già esistenti o definire le controparti native di classi java già esistenti.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2011, 16:18   #3
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Ora solo alle prese con un database, appena ho finito farò delle prove. il JNI l'ho capito, ho trovato un che ne parla.
Ti faccio sapere.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2011, 17:34   #4
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
OK, bene o male ho capito come fare.
Ho un solo dubbio. Se i C++ ho una classe che come variabile ha un FILE*, questo come viene visto in Java se faccio una chiamata?
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2011, 18:55   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Credo che si usi jlong per i puntatori. Cioè se lato C++ hai la funzione che piglia un puntatore a x, la controparte java rappresenta il puntatore come un valore numerico intero (dico long per i puntatori a 64 bit).

Cioè se, in ipotesi, la funzione C++ è:

void fun(Tipo* puntatore) { ... }

In java la rappresenterei con:

void fun(long valoreDelPuntatore) { ... }

Chiaramente "valoreDelPuntatore" non può che venire dalla controparte C++.

Darei comunque un'occhiata a JNA per vedere se non esistano per caso altre tecniche ignote al pubblico.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2011, 21:43   #6
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Credo che si usi jlong per i puntatori. Cioè se lato C++ hai la funzione che piglia un puntatore a x, la controparte java rappresenta il puntatore come un valore numerico intero (dico long per i puntatori a 64 bit).

Cioè se, in ipotesi, la funzione C++ è:

void fun(Tipo* puntatore) { ... }

In java la rappresenterei con:

void fun(long valoreDelPuntatore) { ... }

Chiaramente "valoreDelPuntatore" non può che venire dalla controparte C++.

Darei comunque un'occhiata a JNA per vedere se non esistano per caso altre tecniche ignote al pubblico.
Io sono in lunix, JNA se non erro è solo per Windows.
Comunque se il in C++ ho la funzione FILE* getPicture(){return picture}; mi dici che in java poi sarà un long...e come faccio a ricreare il "file"?
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2011, 22:35   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
jna è per windows/linux/osx/solaris.

Il valore del puntatore ti serve come se fosse la chiave di accesso al valore contenuto in una mappa che esiste solo nella controparte nativa.

Per lavorare col tipo del puntatore passerai attraverso altri metodi nativi. Potresti ad esempio avere:

Codice:
jlong getPicture(nome) {
    FILE* pippo = open qualcosa
    return (jlong) &pippo;//forse, insomma il valore della variabile pippo
}

void transferBytes(jlong pictureFileAddress, jobject byteBuffer) {
    FILE* x = (FILE*)pictureFileAddress;//il cast me lo sono inventato ma ci siamo capiti
    leggi i byte da x che adesso è un FILE e passali nel buffer
}
Non ricrei la struttura dati lato Java, ti limiti a controllarla usando i metodi nativi e l'indirizzo dell'instanza in memoria, presupponendo che il contenuto della memoria di cui conosci l'indirizzo sia conforme al tipo che stai usando (è chiaro che se gli passi un long a caso non funziona).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2011, 22:59   #8
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
OK. bene o male ho capito, ma dovrò andare a leggermi un pò di cose.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2011, 17:12   #9
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
dove metto il database?

Eccomi.
Ho scritto tutto, codice C++, JNI e schermate android. La libreria nativa viene caricata e non va in crash, perciò deduco che la JNI sia OK. Ho un piccolo problema però, che però mi blocca tutto: Non so dove mettere il mio database sqlite. Ho un progetto Eclipse, con le varie cartelle, ma non trovo la posizione. Le chiamate native accedono a dei metodi che richiamano delle query al database..... Ho provato a metterlo accanto ai file .o, accanto alla libreria, accanto alle classi Java...ma non funziona. Qualcuno sa aiutarmi?
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Blue Origin annuncia un aerofreno ripieg...
Blue Origin annuncia una nuova versione ...
LG UltraFine evo 6K: il primo monitor al...
DJI cambia direzione: investe in Elegoo ...
Black Friday Narwal 2025: risparmi da ca...
Phishing evoluto contro Apple ID: caso f...
Prestazioni in discesa nei giochi? NVIDI...
Addio ai banner dei cookie? L'UE spinge ...
Le offerte Black Friday per gli smartpho...
Il controllo qualità degli iPhone...
Qualcomm Snapdragon X Elite vola con il ...
A2RL Season 2: storia, innovazione e sor...
Core Ultra Series 3: Intel conferma l'ev...
Black Friday Amazon: la GeForce RTX 5070...
EcoFlow, il Black Friday porta grande ri...
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: 21:33.


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