Проблема с ошибкой связывания библиотеки MySQL Connector/C++
-
11-09-2019 - |
Вопрос
ПРОБЛЕМА:
Хорошо, я ПЫТАЛСЯ следовать образцу кода на MySQL Forge Wiki и некоторых других веб-сайтах, которые предлагают руководство о том, как получить простое соединение с базой данных, но по какой-то причине мой проект всегда терпит неудачу из-за ошибки связывания, и я могу Сам не понимаю, почему и как это исправить (все еще учусь).ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ!Я включил каталог пути, необходимый для файлов заголовков, в свойства проекта И предоставил каталог пути к файлам lib, которые используются в MySQL Connector/C++.Код, который я использую, приведен ниже, если кто-нибудь может дать мне полезный совет/комментарий о том, как это исправить.Я думаю, что это как-то связано с подключением к файлам lib (из-за ошибки связывания), но я не знаю решения, как это исправить.Была ли у кого-нибудь еще такая проблема?
http://forge.mysql.com/wiki/Connector_C++ http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html#createdb
КОД:
int main() {
// do something
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
sql::ResultSet *res;
sql::PreparedStatement *pstmt;
cout << "Starting Driver Instance" << endl;
driver = sql::mysql::MySQL_Driver::get_mysql_driver_instance();
return 0;
}
ВЫВОД ОШИБКИ:
1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\users\josh bradley\documents\visual studio 2008\projects\test\test\main.cpp(28) : error C2039: 'get_mysql_driver_instance' : is not a member of 'sql::mysql::MySQL_Driver'
1> c:\program files\mysql\mysql connector c++ 1.0.5\include\mysql_driver.h(25) : see declaration of 'sql::mysql::MySQL_Driver'
1>c:\users\josh bradley\documents\visual studio 2008\projects\test\test\main.cpp(28) : error C3861: 'get_mysql_driver_instance': identifier not found
1>Build log was saved at "file://c:\Users\Josh Bradley\Documents\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm"
1>test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
ОБНОВЛЯТЬ:
Я просто хотел, чтобы все знали, что я наконец-то нашел, как решить свою проблему.У кого подобная проблема, зайдите на http://blog.ulf-wendel.de/?p=215#привет и прочитайте инструкции о том, как динамически подключаться к mysqlcppconn.lib.Моя проблема заключалась в настройке реальной среды для правильного подключения к библиотеке, и это руководство очень помогло!
Решение
Сначала вы должны изменить свой код:
driver = sql::mysql::get_mysql_driver_instance();
А затем вы должны связать свой код с помощью mysqlclient.lib Добавить правильный путь своей либера mysqlclient.lib по вашему проекту:
Properties->Linker->General-> Additionnal Libraries
Здесь добавьте путь к вашей библиотеке.
Другие советы
Быстрый поиск в Google подсказывает, что ваша строка должна выглядеть следующим образом:
driver = sql::mysql::get_mysql_driver_instance();
Ошибка является ошибкой компилятора.Он жалуется, что не может найти get_mysql_driver_instance() в указанном пространстве имен.
Попробуйте дважды щелкнуть строку:
1> c:\program files\mysql\mysql connector c++ 1.0.5\include\mysql_driver.h(25) : see declaration of 'sql::mysql::MySQL_Driver'
Он покажет вам файл заголовка, и вы сможете выполнить поиск, чтобы убедиться, что функция присутствует.