mysql_real_connect проблема в _DEBUG

SmilDev
Дата: 22.06.2015 22:10:27
Добрый день.

Помогите решить следующую проблему.

проект в VS2013
к проекту подключен коннектор MySQL Connector.C 6.1

в виде libmysql.lib и libmysql.dll


подключение к BD выполнено так

	MYSQL * mySQLConnect = mysql_init(NULL);
	if (!mySQLConnect)
	{
		_loger->ErrorLog("SQLConnection", "MySQL Initialization Failed");
		return false;
	}
	mySQLConnect = mysql_real_connect(mySQLConnect, (const char*)(&ip), (const char*)(&login), (const char*)(&pass), (const char*)(&databaseName), 0, NULL, 0);

	if (!mySQLConnect)
	{
		_loger->ErrorLog("SQLConnection", "MySQL Connection to Database " + databaseName + " Failed." + mysql_error(mySQLConnect));
		return false;
	}


в Release конфигурации все работает как положено
переделываю Release в Debug ручками.

меняю в настройках конфигурации
C/C++ -> Preprocessor -> Preprocessor Definitions
c WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
на WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)

C/C++ -> CodeGeneration -> RuntimeLibrary
c Multi-threaded (/MT)
на Multi-threaded Debug (/MTd)

компилируется запускается, но не соединяется с сервером. mysql_error(mySQLConnect) не выдает ничего.
смотрел через TCPWiev программа даже не пытается открывать сетевое соединение.

что неправильно делаю ?
MasterZiv
Дата: 22.06.2015 23:23:30
SmilDev,

тебе нужно также использовать отладочные версии библиотеки libmysql,
обычно она либо называется libmysqld.lib/dll, либо называется так же, но лежит в другом каталоге в дистрибутиве.
SmilDev
Дата: 22.06.2015 23:28:46
да я это понимаю на посознательном уровне. но на сайте mysql.com

есть коннектор
http://dev.mysql.com/downloads/connector/c/

в этом коннекторе нет отдельно либ для debug версии
MasterZiv
Дата: 23.06.2015 01:21:08
SmilDev
да я это понимаю на посознательном уровне. но на сайте mysql.com

есть коннектор
http://dev.mysql.com/downloads/connector/c/

в этом коннекторе нет отдельно либ для debug версии


должны быть.
завтра я посмотрю дистриб, проверю
SmilDev
Дата: 23.06.2015 09:50:28
буду очень признателен.
я уже кажется все перепробовал.

проект собирается запускается но не соединяется с базой mysql
MasterZiv
Дата: 23.06.2015 11:32:40
SmilDev,

On Windows, the static library is mysqlclient.lib and the dynamic library is libmysql.dll. Windows distributions also include libmysql.lib, a static import library needed for using the dynamic library.

Windows distributions also include a set of debug libraries. These have the same names as the nondebug libraries, but are located in the lib/debug library.
SmilDev
Дата: 23.06.2015 11:40:40
MasterZiv
если не сложно то скачайте этот коннектор и попробуйте найти там папку lib/debug если вы ее там найдете ткните меня носом.
т.к. нет этой папки в коннекторе.
MasterZiv
Дата: 23.06.2015 11:44:37
SmilDev,

я склонен верить больше официальной документации mysql, чем тебе, уж извини.
Скачаю, ткну.
Но с другой стороны, если уж совсем никак не найти - собери ее сам, это же open source...
SmilDev
Дата: 23.06.2015 12:55:10
вопрос решен.
проблема в преобразовании типа (const char*)(&ip)

ip это std::string

в релизной сборке это работает в дебаге нет.

заменил на ip.c_str() все заработало.

видимо все таки нет отладочных версий библиотеки libmysql.
MasterZiv
Дата: 23.06.2015 13:50:25
SmilDev,

Вот каталог установленного MySQL(comunity):


╔═══ C:\app\mysql-5.6.12-win32\lib ═══╗
║n Name │ Size ║
║.. │ Up ║
║debug │Folder║
║plugin │Folder║
║libmysql.dll │4363 K║
║libmysql.lib │ 25958║
║libmysql.pdb │6228 K║
libmysqld.dll │ 11 M║
libmysqld.lib │ 26056║
║libmysqld.pdb │ 31 M║
║mysqlclient.lib │ 11 M║
║mysqlclient.pdb │ 45056║
║mysqlserver.lib │ 89 M║
║mysqlserver.pdb │ 45056║
║mysqlservices.lib │ 15428║

А вот его подкаталог debug

╔═ C:\app\mysql-5.6.12-win32\lib\debug ═╗
║n Name │ Size ║
║.. │ Up ║
mysqlclient.lib │ 12 M║
║mysqlclient.pdb │ 45056║
║mysqlserver.lib │ 109 M║
║mysqlserver.pdb │ 45056║

Почти всё, как написано в документации.