Voglio connettermi ad un database mysql con C++ in linux. Sulla mia macchina locale Sono in esecuzione Ubuntu, ed ho installato i pacchetti server e client mysql:Impostazione Mysql ++ in linux
sudo apt-get install mysql-server mysql-client
mi sono imbattuto Mysql++ ma alcuni problemi durante l'esecuzione di ./configure dal loro pacchetto binario. L'errore dice:
checking for MySQL library directory... configure: error: Didn't find mysqlclient library in '/usr/lib64 /usr/lib /usr/lib64/mysql /usr/lib/mysql /usr/local/lib64 /usr/local/lib /usr/local/lib/mysql /usr/local/mysql/lib /usr/local/mysql/lib/mysql /usr/mysql/lib/mysql /opt/mysql/lib /opt/mysql/lib/mysql /sw/lib /sw/lib/mysql'
vedo dove posso utilizzare questo comando per specificare il percorso:
./configure --with-mysql-lib=/...
, ma non so dove puntare a. Ho usato whereis mysql ma non riesco a trovare alcuna directory mysql che contenga una sottodirectory lib. Dove dovrebbero essere installate le librerie mysqlclient?
EDIT:
Dopo aver fatto individuare libmysqlclient
sono tornato
/usr/lib/i386-linux-gnu/libmysqlclient.so.18
/usr/lib/i386-linux-gnu/libmysqlclient.so.18.0.0
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18.0.0
/usr/share/doc/libmysqlclient18
/usr/share/doc/libmysqlclient18/changelog.Debian.gz
/usr/share/doc/libmysqlclient18/copyright
/var/cache/apt/archives/libmysqlclient18_5.5.22-0ubuntu1_i386.deb
/var/lib/dpkg/info/libmysqlclient18:i386.list
/var/lib/dpkg/info/libmysqlclient18:i386.md5sums
/var/lib/dpkg/info/libmysqlclient18:i386.postinst
/var/lib/dpkg/info/libmysqlclient18:i386.postrm
/var/lib/dpkg/info/libmysqlclient18:i386.shlibs
Così, ho provato ./configure --with-mysql-lib=/usr/lib/i386-linux-gnu
e sembra completare senza lamentarsi.
Sebbene questo risolva il problema di ottenere ./configure per il completamento, ho ancora ulteriori problemi. Quando eseguo make
le cose vanno bene fino a questo punto:
In file included from ./lib/sql_buffer.h:31:0, from ./lib/sql_buffer.cpp:26: ./lib/refcounted.h:258:2: error: ‘size_t’ does not name a type ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer()’: ./lib/refcounted.h:89:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer(T*)’: ./lib/refcounted.h:100:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h:104:4: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h:104:16: error: expected type-specifier before ‘size_t’ ./lib/refcounted.h:104:16: error: expected ‘;’ before ‘size_t’ ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer(const ThisType&)’: ./lib/refcounted.h:112:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h:115:8: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h: In destructor ‘mysqlpp::RefCountedPointer::~RefCountedPointer()’: ./lib/refcounted.h:125:7: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h: In member function ‘void mysqlpp::RefCountedPointer::swap(mysqlpp::RefCountedPointer::ThisType&)’: ./lib/refcounted.h:246:13: error: ‘refs_’ was not declared in this scope make: *** [mysqlpp_sql_buffer.o] Error 1
io non sono davvero familiarità con C++, quindi non sono sicuro di cosa significa esattamente l'errore. Sarebbe molto apprezzato qualsiasi aiuto o direzione su come ottenere l'installazione di Mysql ++ da questo punto. Anche se, ammetto che sto anche iniziando a cercare librerie alternative da usare.
Wow, grazie per aver dedicato del tempo per scrivere questo. Ho finito per sentirmi frustrato e ho usato il MYSQL C api direttamente, ma sono sicuro che la tua soluzione aiuterà coloro che hanno anche questo problema in futuro! – Aaron
avevo scelto quel percorso originariamente anche, MA non potevo catturare errori mysql (come il tentativo di inserire una voce di chiave duplicata) e questo avrebbe fatto abortire il mio programma, quindi ho seguito il punto in cui era rimasto (ho tratto vantaggio dalla soluzione del passo 1 [posizione dei file lib]). –