Erro compilar exemplos mysql++ com g++

13. algum progresso...

Paulo Marcos Trentin
paulopmt1

(usa Debian)

Enviado em 13/05/2008 - 11:01h

Opa agora tá dando bem menos erros e dá pra "intender" mais ou menos oque está acontecendo... ao compilar o arquivo simple1.cpp que se encontra em /usr/share/doc/libmysql++-dev/examples/simple1.cpp ele me retorna os erros:

server:/usr/share/doc/libmysql++-dev/examples# g++ -lmysqlpp -I/usr/include/mysql -I/usr/include/mysql++ simple1.cpp -o simple
/tmp/cckfLsUl.o: In function `main':
simple1.cpp:(.text+0xbe): undefined reference to `connect_to_db(int, char**, mysqlpp::Connection&, char const*)'
simple1.cpp:(.text+0x1ba): undefined reference to `utf8trans(char const*, char*, int)'

pelo que entendo ele diz que não foram declaradas as funções connect_do_db e utf8trans

mais eu devo então declarar essas funções antes do main() como você disse?
A questão é, onde encontrar essas funções para que eu possa as declarar antes de main(), porque eu não sei como elas funcionam...

desde já, muito obrigado pela ajuda galera...





Aqui o arquivo simple1.cpp que eu estou compilando.:


#include "util.h"

#include <mysql++.h>

#include <iostream>
#include <iomanip>

using namespace std;

int
main(int argc, char *argv[])
{
// Connect to the sample database.
mysqlpp::Connection con(false);
if (!connect_to_db(argc, argv, con)) {
return 1;
}

// Retrieve a subset of the sample stock table set up by resetdb
mysqlpp::Query query = con.query();
query << "select item from stock";
mysqlpp::Result res = query.store();

// Display the result set
cout << "We have:" << endl;
if (res) {
char buf[100];
mysqlpp::Row row;
mysqlpp::Row::size_type i;
for (i = 0; row = res.at(i); ++i) {
cout << '\t' << utf8trans(row.at(0), buf, sizeof(buf)) << endl;
}
}
else {
cerr << "Failed to get item list: " << query.error() << endl;
return 1;
}

return 0;
}



  


14. Re: Erro compilar exemplos mysql++ com g++

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 13/05/2008 - 11:31h

Mesma coisa aqui, para ser mais exato, todos os exemplos que testei estão com algum problema...

Algum pacote que tem que ser intalado a mais pelo jeito, pois quando uso a biblioteca que baixei do site do MySQL e compilei na mão esses problemas não existem.

Acho melhor você compilar na mão, pois com esses pacotes da Debian tá complicado mesmo...


15. ok, mais como proseguir?

Paulo Marcos Trentin
paulopmt1

(usa Debian)

Enviado em 13/05/2008 - 11:57h

blz, sou meio leigo nisso. Compilar à mão que você diz é baixar o pacote source no http://tangentsoft.net/mysql++/ certo?

baixei o pacote mysql++-3.0.3.tar.gz, descompactei e então acesso ele e dou ./configure daí make e então make install certo?

fiz tudo isso não deu erro algum, mais ao compilar o exemplo anterior, estando na mesma pasta, dá o mesmo erro...

será que preciso remover os pacotes instalados via apt-get com apt-get remove nome_do_pacote antes de fazer essa instalação manual?



16. Re: Erro compilar exemplos mysql++ com g++

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 13/05/2008 - 13:14h

Isso mesmo, o source é esse mesmo.

O procedimento é esse mesmo, ./configure, make e (sendo root) make install. Fiz um teste deixando os pacotes que instalei pelo aptitude e não tive problemas de conflito, acho que você pode deixar os dois...

Acredito pelo que você disse acima que já está funcionando o seu também. Nesse mesmo diretório (onde você compilou) você deve ver os arquivos de exemplos já compilados e funcionando.

Os fontes deles ficam nesse mesmo diretório /exemples


Conseguiu verificar isso?


17. ok, vamos lá

Paulo Marcos Trentin
paulopmt1

(usa Debian)

Enviado em 13/05/2008 - 17:54h

se eu compilar o simple1.cpp de:/usr/share/doc/libmysql++-dev/examples:


server:/usr/share/doc/libmysql++-dev/examples# g++ -lmysqlpp -lmysqlclient -I/usr/include/mysql -I/usr/include/mysql++ simple1.cpp
/tmp/cc9ugrr8.o: In function `main':
simple1.cpp:(.text+0xbe): undefined reference to `connect_to_db(int, char**, mysqlpp::Connection&, char const*)'
simple1.cpp:(.text+0x1ba): undefined reference to `utf8trans(char const*, char*, int)'
collect2: ld returned 1 exit status
server:/usr/share/doc/libmysql++-dev/examples#


se eu for no diretório onde tem os fontes do mysql++ que eu usei para instalar como dito acima e entrar na pasta examples e compilar:


server:/home/web/www/arqs/mysql++-3.0.3/examples# g++ -lmysqlpp -lmysqlclient -I/usr/include/mysql -I/usr/include/mysql++ simple1.cpp
printdata.h:35: error: expected unqualified-id before '&' token
printdata.h:35: error: expected ',' or '...' before '&' token
printdata.h:37: error: ISO C++ forbids declaration of 'parameter' with no type
printdata.h:38: error: variable or field 'print_stock_rows' declared void
printdata.h:38: error: 'StoreQueryResult' is not a member of 'mysqlpp'
printdata.h:38: error: 'res' was not declared in this scope
simple1.cpp: In function 'int main(int, char**)':
simple1.cpp:52: error: no matching function for call to 'mysqlpp::Connection::query(const char [23])'
/usr/include/mysql++/connection.h:199: note: candidates are: mysqlpp::Query mysqlpp::Connection::query()
simple1.cpp:53: error: 'StoreQueryResult' is not a member of 'mysqlpp'
simple1.cpp:53: error: expected `)' before 'res'
simple1.cpp:55: error: 'res' was not declared in this scope

ainda não está compilando direito... vou ver se axo alguma coisa aqui, mais se tiver alguma sugestão..


18. O caminho das pedras

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 15/05/2008 - 09:48h

Edita o examples/simple1.cpp
Depois utilize o make do mysql em si (o que você já usou para compilar a biblioteca), no lugar desse na mão.

Assim que consegui compilar anteriormente.



Bem, mas agora que tive algum tempo, resolvi compilar na mão, para isso fiz o seguinte:

Copie o Makefile da pasta do MySQL para a pasta de examples
Alterei o Makefile, excluindo o desnecessário e alterando os paths.

Compilei e funcionou.

Depois fui resumindo o que estava a mais e cheguei ao seguinte comando (que funcionou):

g++ -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlclient -lmysqlpp -o simple1 simple1.cpp cmdline.cpp




19. chatisse...

Paulo Marcos Trentin
paulopmt1

(usa Debian)

Enviado em 20/05/2008 - 08:00h

Primeiramente quero agradecer a todos, principalmente a você Rodrigo, vlw mesmo por tentar me ajudar...
Mais por enquanto vou fazer minha aplicação em C mesmo, porque em C já consegui acesso a banco de dados e estou me saindo bem...
Assim que sobrar mais tempo vou reformatar meu note daí vou reinstalar debian e o mysql na mão, daí então recomeçarei os testes, espero que daí sim funcione...

Mais uma vez obrigado


20. cara

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 20/05/2008 - 10:27h

sem querer ser chato mas sendo, vai uma dica e opnião minha.
Se sua aplicação for pequena manda brasa no C mesmo, é bom que as vezes acaba ficando mais leve dependendo de como é feita.
Agora se você pretende algo de manutenção mais facil (e isso é necessário principalmente em aplicações maiores) e nesse caso recomendo até usar stl e tudo mais, então perde um tempo pra deixar o negócio funcionando e fazer em C++ doque depois perder mto mais tempo na manutenção em C. Eu acho C muito bom pra muita coisa, principalmente quando se quer portabilidade e performance, mas C++ é muito mais produtivo e se a aplicação for bem estruturada vai ter uma manutenção muito melhor.


21. interessante...

Paulo Marcos Trentin
paulopmt1

(usa Debian)

Enviado em 21/05/2008 - 10:41h

olá João. Não tem nada de chato em dar sua opinião, ainda mais quando construtiva, que é o caso. Sou inesperiente em programação com C ou C++, agradeço seu comentário, com ele percebi que estou indo pro caminho certo hehe.
Minha aplicação realmente não é muito grande. É um projeto de controle de alarme que estou fazendo, o ussuário remotamente ativa/desativa o alarme via celular ou internet, e em determinado momento eu precisei acessar o banco de dados, e como vou precisar disso...
Resumindo o que preciso é mesmo de velocidade e pelo que você disse C é bom nisso, então fico feliz em saber.

Obrigado pela dica.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts