Как добавить MySQL коннектор / C ++ 1.1 в проект Visual Studio 2010? - PullRequest
2 голосов
/ 25 февраля 2011

Я пытаюсь добавить MySQL Connector / C ++ в мой проект Visual Studio 2010.

Я следовал инструкциям ( здесь, mysql docs ), чтобы добавить его в Visual Studio (я также добавил Boost в «Дополнительные каталоги включения»).

Он запросил файл "sqlstring.h" (Как выпуск может пропустить файл?!), Поэтому я получил его из исходных файлов ( mysql исходные архивы ).

Затем он запросил libmyql.lib, у меня был каталог lib MySQL Server 5.5 \ lib.

А теперь я на этой ошибке:

Ошибка 127, ошибка LNK1120: 31 неразрешенный внешний файл C: \ Users \ Haks \ Documents \ Visual Studio 2010 \ Projects \ ProductManager \ Debug \ ProductManager.exe ProductManager

Ошибка 60, ошибка LNK2001: неразрешенный внешний символ "__declspec(dllimport) bool __cdecl std::operator<<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z) C: \ Users \ Haks \ Documents \ Visual Studio 2010 \ Projects \ ProductManager \ ProductManager \ mysqlcppconn-static.lib (mysql_ps_resultset.obj) ProductManager

Итак, возможно, это потому, что я получил бинарный выпуск MySQL Connector / C ++ 1.1 и, возможно, он не совместим с VS 2010 ...

Но я не могу найти хороший способ скомпилировать исходные файлы, и я никогда не использую Boost или CMake, и, похоже, это необходимо.

Я не нашел ссылки на мою проблему, поэтому, если кто-то получит ответ или хороший способ, это будет очень полезно для меня и многих людей, я думаю.

Спасибо

Ответы [ 3 ]

6 голосов
/ 18 июля 2012

Прежде всего, спасибо dar7yl за указание в правильном направлении.

Потратив много времени на отладку mysql-соединения (VS 2010, C ++), которое оказалось очень полезным, явынужден что-то сказать по этому поводу.(Предполагается, что вы правильно настроили каталог включаемых файлов C ++ и каталог ссылок + дополнительный файл зависимостей, в противном случае обратитесь к веб-сайту по пункту 2 для справки)

0.) Да, нам нужна библиотека повышения.Загрузите библиотеку надстроек (найдите в Google) и распакуйте ее в папку для разработки, и пусть ваши дополнительные директории c ++ указывают на нее (основной каталог наддува, а не дочерний каталог наддува).

1.разница в настройках VS решения в режиме «отладка» и «выпуск».Предоставленные файлы .lib, предоставленные после полной установки MYSQL в каталоге ... \ mysql \ Connector C ++ ____ \ lib \, имеют две директории debug и выбирают для использования соответственно с режимами решения "debug" и "release".Основное отличие заключается в том, что в режиме «отладка» используются дополнительные файлы .pdb.

2.) http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-apps-windows-visual-studio.html дает очень подробный план настройки подключения mysql VS2008.В частности, необходимо включить в [Project, представление дерева свойств, в C ++, Preprocessor] два оператора CPPCONN_PUBLIC_FUNC = и HAVE_INT8_T = 1

3.), Чтобы было ясно, какой режим соединения вы хотели бы использовать с библиотекой mysqlcppconn.lib основан на dll, а mysqlcppconn-static.lib - на статической основе.Для библиотеки на основе DLL связанные DLL-файлы mysqlcppconn.dll должны быть помещены в \ windows \ system32 \ или другой системный путь для доступа.
Для статического соединения помните, что используется внешнее соединение C, поэтому вам потребуется libmysql.lib + libmysql.dll.(libmysql.pdb, если в разделе "debug") из ... \ mysql \ connectorc c ___ \, если нет, вы получите неразрешенную внешнюю ошибку символа LNK 2019. Поэтому незамедлительно обновите каталог включаемых файлов c ++, укажите каталог включаемых файлов, дополнительныесоответственно, и поместите файл .dll в системный путь или .... \ windows \ system32 \

4.) На этом этапе у некоторых из нас все должно работать.И нет, это не сработало для меня.Причина?Проблема сравнимости библиотек, описанная dar7yl.Поэтому, если это так, загрузите исходный код для соединителя в http://dev.mysql.com/downloads/connector/cpp/, выбрав платформу для исходного кода.Распакуйте, и это станет немного сложнее.Нет решения VS или файлов проекта?Не беспокойтесь, смотрите файл cmake __. Txt?это наше решение.Загрузите cmake и укажите исходный каталог и каталог назначения в вашем распакованном каталоге исходного кода.Затем откройте в каталоге cmake __. Txt, найдите ключевое слово boost и обновите каталог boost, чтобы он указывал на каталог boost.Запустите configure и настройте VS 2010, проверьте описанную конфигурацию и измените все, что нужно, таблицу Name / Value, затем нажмите Generate.К настоящему моменту ваш проект + файлы решения должны быть сгенерированы, откройте его, и вы увидите много проектов.Нас интересуют только mysqlcppconn и mysqlcppconn-static.проверьте и обновите включаемые файлы, файлы ссылок + зависимости в свойствах двух проектов и скомпилируйте.Удалите сгенерированные файлы .lib + .dll (и .pdb, если используется режим «отладка») в соответствующие каталоги, и ваш проект должен работать.

К этому моменту соединение mysql теперь работает для меня, надеюсь, оно работает дляты тоже.Некоторые детали могут отсутствовать в приведенном выше, и я извиняюсь.

2 голосов
/ 26 апреля 2013

Просто небольшое дополнение к отличному посту dddddd.Если вы компилируете в Windows7, вы, вероятно, получите некоторые «неразрешенные внешние компоненты» из библиотеки libmysql.lib.Я обнаружил, что это связано с тем, что libmysql.lib пришел с 64-битной установки сервера.Вам нужно будет найти 32-битную версию и связать ее с ней или просто установить 32-битный сервер.

1 голос
/ 03 июня 2011

Я наконец-то заставил MySQL Connector / C ++ работать с Visual Studio 2010, загрузив исходный код и скомпилировав его с теми же настройками, что и у моего проекта.Он по-прежнему предупреждает о библиотеке SqlString:

j:\mysql-connector-c++-1.1.0\cppconn\sqlstring.h(36): warning C4251: 'sql::SQLString::realStr' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'sql::SQLString'

, но, похоже, с этим все в порядке.

...