Разрешение неопределенных ссылок с MySQL C ++ Connector

Я пытаюсь скомпилировать это (также указано в документации по соединителю mysql c ++): http://pastebin.com/HLv4zR0r

Но я получаю эти ошибки: http://pastebin.com/3t0UbeFy

Вот как я пытался компилировать:

g++ -o test test.cpp `mysql_config --cflags --libs` -I./include/cppconn -L./lib -lmysqlcppconn-static

Результат бега mysql_config --cflags --libs является:

-I/usr/include/mysql -DBIG_JOINS=1  -fno-strict-aliasing  -g
-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl

Редактировать:

После запуска предложенной команды Джонатана Уэйкли с правильно упорядоченными аргументами компоновщика,

g++ -o test test.cpp  -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`

Я получаю разные ошибки: http://pastebin.com/4EWNgy9i

2

Решение

Библиотека mysqlcppcon зависит от библиотек mysqlclient C, поэтому вам нужно поставить библиотеки mysqlclient после -lmysqlcppconn-static

g++ -o test test.cpp  -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`

Порядок аргументов линкера имеет значение. Компоновщик просматривает каждый файл по порядку и решает, нужны ли ему какие-либо символы из него. К тому времени, когда он видит libmysqlcppconn-static.a файл, который он уже просматривал (и игнорировал) в библиотеке libmysqlclient.so, и больше не возвращается, чтобы посмотреть на него снова.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]