View Full Version : [C++] NDK Android + sqlite3
Emaborsa
12-05-2011, 18:29
Ammetto che sto facendo un progetto universitario, ma in rete non trovo soluzioni al mio problema. Abbiamo dovuto scrivere le classi in C++ per poi creare l'applicazione in Android con NDK e poi per MeeGo in QT. QT non ci sono stati problemi, in Android:
Ho scritto una mia classe Database implementando sqlite. In QT ho semplicemente fatto l'include del sqlite3.h e nel makefile del probetto ho incluso la libreria libsqlite3.a. Non riesco a farlo nel build della libreria con NDK. Mi da sempre l'errore "undefined reference" e non so come fare. Molto probabilmente è solo una stringa in un file .mk, ma non reisco a scoprire quale.
Qualcuno mi sa dare una mano?
Ciao,
sarebbe utile sapere a quale libreria appartiene il nome che segue la segnalazione dell'errore ("undefined reference to 'xxxx').
Che versione dell'ndk hai installata? prova ndk-build v=1 per avere maggiori dettagli sul processo di build.
Emaborsa
14-05-2011, 14:11
Ciao,
sarebbe utile sapere a quale libreria appartiene il nome che segue la segnalazione dell'errore ("undefined reference to 'xxxx').
Che versione dell'ndk hai installata? prova ndk-build v=1 per avere maggiori dettagli sul processo di build.
Allora, io linkavo la libreria libsqlite3.a di linux, dato che in QT facendo così funziona. Poi mi hanno fatto notare che non potrà mai funzionare (...ripensandoci è anche ovvio).
Ho risolto scaricando file c e h dal www.sqlite.org all'ultima versione. :D
Allora, io linkavo la libreria libsqlite3.a di linux, dato che in QT facendo così funziona. Poi mi hanno fatto notare che non potrà mai funzionare (...ripensandoci è anche ovvio).
Ho risolto scaricando file c e h dal www.sqlite.org all'ultima versione. :D
In che senso? Perché devi ricompilare il sorgente per la NDK giusto? Invece il .a era per il kernel linux della macchina dal quale programmi? Se non è questo il motivo, mi sfugge.
Emaborsa
14-05-2011, 15:35
In che senso? Perché devi ricompilare il sorgente per la NDK giusto? Invece il .a era per il kernel linux della macchina dal quale programmi? Se non è questo il motivo, mi sfugge.
Il ho scritto delle classi in C++. Una di queste usava la libreria di linux (la libsqlite3.a) Finchè il codice veniva usato per linux, usanco gcc ...... andava perfetto.
Facendo per il build con NDK, non posso prendere la libreria in question, perchè questa in automatico prende la libreria pthread di linux, che non è compatibile. L'errore era questo. Allor aho preso c e h sal sito, questi non vanno a prendere la libreria di linux, perciò il build funziona.
Il ho scritto delle classi in C++. Una di queste usava la libreria di linux (la libsqlite3.a) Finchè il codice veniva usato per linux, usanco gcc ...... andava perfetto.
Facendo per il build con NDK, non posso prendere la libreria in question, perchè questa in automatico prende la libreria pthread di linux, che non è compatibile. L'errore era questo. Allor aho preso c e h sal sito, questi non vanno a prendere la libreria di linux, perciò il build funziona.
got it. Anche perché dicono che Android usa linux, ma non è esattamente vero.
Emaborsa
14-05-2011, 16:37
got it. Anche perché dicono che Android usa linux, ma non è esattamente vero.
....se si parla di grafica, per esempio OpenGL, si. Ma siccome libsqlite3.s include la libpthread, non è possibile. Questo perchè android ha le sue librerie riguardo i thread.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.