Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
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


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
TCL perde in tribunale: quei TV 'QLED' n...
NVIDIA: la scarsità di hardware c...
Nintendo fa causa al governo USA per i d...
iPhone 17 256GB a 899€, MacBook Air 16/2...
C'è l'IA dietro la tua canzone pr...
Rocket Lab ha posticipato il lancio del ...
Dalla missione Artemis IV il razzo spazi...
Una delle sonde europee di ESA Proba-3 h...
Un modder fa girare Linux su PS5: GTA V ...
MacBook Neo: nessuna sorpresa nei primi ...
La serie POCO X8 Pro è pronta al ...
Smartphone: 2026 difficile per il mercat...
Star Wars: Knights of the Old Republic R...
Huang, NVIDIA: OpenClaw ha realizzato in...
Annunciano il recupero di 4,8 milioni di...
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: 11:35.


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