Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > MySql + MySql++


Автор: Artemon 7.5.2008, 19:23
Скачал библиотеку mysql++, 
развернул архив в /home/artem/mysql++

Скомпилировал mysql++, все прошло без ошибок.

Далее создал свой проект, в котором импользуется mysql++,
установил все флаги (-L/bla-bla/mysql), Добавил путь к директории с инклюдами от MySql++

И вот беда, при линковке начинают происходить ошибки типа: 
"Result.h:343 undefined reference to mysqlpp::ResUse...."

И всебы ничего, да вот Result.h - это файл самой библотеки MySql++, которую я успешно скомпилировал.

А линковка файлов, которые я сам писал проходит успешно.

Кто-нибудь сталкивался с таким?


Автор: JackYF 7.5.2008, 22:23
Цитата(Artemon @  7.5.2008,  18:23 Найти цитируемый пост)
Кто-нибудь сталкивался с таким?

А lib самой mysql++ ты похоже, прилинковать забыл smile

Автор: Artemon 8.5.2008, 06:07
Почему тогда ругань происходит только в файлах библиотеки MySql++,
а в моих файлах все спокойно, хотя и используются вызовы MySql++

Автор: JackYF 8.5.2008, 12:27
Давай показывай полную строку линковки тогда.

Автор: Artemon 8.5.2008, 14:29
В MySql++ как и везде есть файлы *.h и *.cpp

Код

#ifndef MYSQLPP_STRING_UTIL_H
#define MYSQLPP_STRING_UTIL_H

#include <ctype.h>

namespace mysqlpp {

/// \brief Removes all blanks
MYSQLPP_EXPORT extern void strip_all_blanks(std::string& s);
}
}


И соответсвенно реализация:

namespace mysqlpp {
Код

void
strip_all_blanks(std::string& s)
{
    for (std::string::size_type i = 0; i < s.length(); ++i) {
        if (s[i] == ' ') {
            s.erase(i, 1);
            --i;
        }
    }
}
}


Так вот происходит ругань типа немогу найти ссылку на функцию: strip_all_blanks
И вот на эту одну функцию и ругается, на остальные типа порядок

Вот вывод:
Код

debian:/tmp1/LocarusServer# make
make  all-recursive
make[1]: Entering directory `/tmp1/LocarusServer'
Making all in src
make[2]: Entering directory `/tmp1/LocarusServer/src'
/bin/sh ../libtool --tag=CXX   --mode=link g++  -g -O2    -o locarusserver AbstractThread.o cdbbase.o cprogrammsettings.o cstoredprocparametrs.o datalayer.o locarusserver.o my_exceptions.o my_socket.o net_thread.o socket_listener.o util.o -L -lmysqlpp -lpthread
g++ -g -O2 -o locarusserver AbstractThread.o cdbbase.o cprogrammsettings.o cstoredprocparametrs.o datalayer.o locarusserver.o my_exceptions.o my_socket.o net_thread.o socket_listener.o util.o  -L/tmp1/LocarusServer/src /usr/lib/libmysqlpp.so -lpthread
datalayer.o: In function `int mysqlpp::ColData_Tmpl<mysqlpp::const_string>::conv<int>(int) const':
/home/artem/mysql++-2.3.2/lib/coldata.h:365: undefined reference to `mysqlpp::strip_all_blanks(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
datalayer.o: In function `unsigned int mysqlpp::ColData_Tmpl<mysqlpp::const_string>::conv<unsigned int>(unsigned int) const':
/home/artem/mysql++-2.3.2/lib/coldata.h:365: undefined reference to `mysqlpp::strip_all_blanks(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
util.o: In function `long long mysqlpp::ColData_Tmpl<mysqlpp::const_string>::conv<long long>(long long) const':
/home/artem/mysql++-2.3.2/lib/coldata.h:365: undefined reference to `mysqlpp::strip_all_blanks(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
util.o: In function `double mysqlpp::ColData_Tmpl<mysqlpp::const_string>::conv<double>(double) const':
/home/artem/mysql++-2.3.2/lib/coldata.h:365: undefined reference to `mysqlpp::strip_all_blanks(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
collect2: ld returned 1 exit status
make[2]: *** [locarusserver] п·я┬п╦п╠п╨п╟ 1
make[2]: Leaving directory `/tmp1/LocarusServer/src'
make[1]: *** [all-recursive] п·я┬п╦п╠п╨п╟ 1
make[1]: Leaving directory `/tmp1/LocarusServer'
make: *** [all] п·я┬п╦п╠п╨п╟ 2
debian:/tmp1/LocarusServer#



Автор: JackYF 8.5.2008, 19:25
Цитата(Artemon @  8.5.2008,  13:29 Найти цитируемый пост)
/usr/lib/libmysqlpp.so

почему именно так, почему не "-lmysqlpp" ?

Автор: Artemon 9.5.2008, 14:38
а вчем разница ?

Автор: JackYF 10.5.2008, 11:24
Цитата(Artemon @  9.5.2008,  13:38 Найти цитируемый пост)
а вчем разница ? 

ну ты сначала попробуй, заработает ли так...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)