Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL C connector warning, mysqlclient.pdb was not found 
:(
    Опции темы
dershokus
Дата 3.8.2012, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 7.8.2011

Репутация: нет
Всего: 1



Все добрый день.
Подключаю библиотеку mysqlclient.lib так
Код

#pragma comment(lib,"mysqlclient.lib")

Все собирается нормально, но кидает много варнингов вида
Код

1>mysqlclient.lib(client.obj) : warning LNK4099: PDB 'mysqlclient.pdb' was not found with 'mysqlclient.lib' or at 'mysqlclient.pdb'; linking object as if no debug info


Проект собирается с /MTd флагом (Visual C++ 2008)
Если выставить /MT, то проект вообще не собирается.
Код

1>mysqlclient.lib(handshake.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
и т.д.

Все это происходит по Debug. Есть какие-нибудь предложения?
PM MAIL   Вверх
dershokus
Дата 3.8.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 7.8.2011

Репутация: нет
Всего: 1



И вот еще какой вопрос, зачем либе pdb если исходов всеравно нет?
PM MAIL   Вверх
korian
Дата 3.8.2012, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(dershokus @  3.8.2012,  10:19 Найти цитируемый пост)
Проект собирается с /MTd флагом (Visual C++ 2008)

Цитата(dershokus @  3.8.2012,  12:31 Найти цитируемый пост)
И вот еще какой вопрос, зачем либе pdb если исходов всеравно нет? 

Цитата(dershokus @  3.8.2012,  10:19 Найти цитируемый пост)
mysqlclient.lib(client.obj) : warning LNK4099: PDB 'mysqlclient.pdb' was not found with 'mysqlclient.lib' or at 'mysqlclient.pdb'; linking object as if no debug info

Я думаю линкер об этом и говорит, что библиотека есть, но дебажить ее не получиться, т.к. нету debug информации.

Цитата(dershokus @  3.8.2012,  10:19 Найти цитируемый пост)
Если выставить /MT, то проект вообще не собирается.

думаю, потому что присутствует define'ы на _DEBUG, и поэтому он использует не те определения в *.h файлах

PM   Вверх
dershokus
Дата 3.8.2012, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 7.8.2011

Репутация: нет
Всего: 1



А можно как-нить сказать msvc линкеру, не искать pdb для конкретной библиотеки?
Есть ли какая-нибудь прагма или опция(желательно не просто отключающая данное сообщение об ошибки?
PM MAIL   Вверх
korian
Дата 3.8.2012, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Как вариант, вы можете использовать libmysql.lib + динамическую линковку в debug режиме
и mysqlclient.lib + статическую линковку в release режиме
ну или и там и там динамическую линковку.

Цитата(dershokus @  3.8.2012,  14:01 Найти цитируемый пост)
А можно как-нить сказать msvc линкеру, не искать pdb для конкретной библиотеки?
Есть ли какая-нибудь прагма или опция(желательно не просто отключающая данное сообщение об ошибки? 

Думаю что можно, но я их не знаю и лень искать smile

PM   Вверх
dershokus
Дата 3.8.2012, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 7.8.2011

Репутация: нет
Всего: 1



korian, спасибо за наводку. Нормальное решение, хоть и костыль.
Вот тут люди тоже на похожу проблему сокрушаются... 
PM MAIL   Вверх
leniviy
Дата 14.8.2012, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



Цитата(dershokus @  3.8.2012,  11:19 Найти цитируемый пост)

1>mysqlclient.lib(handshake.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
и т.д.

Дело в том, что  дебаг и релиз библиотеки, собранные с использованием Visual C++, и зависящие от STL, несовместимы. (чтобы собрать правильную бибилиотеку на Visual C (не ++), нужно использовать правильные флаги компилятора)

Авторы знали это. Я заглянул в содержимое mysql-enterprise-gpl-noinstall-5.1.46sp1-win32.zip.
Там есть папочки debug\ и opt\
В обеих лежат разные по содержимому mysqlclient.lib и mysqlclient.pdb

Поэтому в студии для дебаг и релиз конфигурации в свойствах проекта надо прописывать разные пути к бибилиотекам (скорее всего Linker/Additional library directories)

Это сообщение отредактировал(а) leniviy - 14.8.2012, 11:10
PM MAIL   Вверх
dershokus
Дата 14.8.2012, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 7.8.2011

Репутация: нет
Всего: 1



В mysql-connector-c-noinstall-6.0.2-winx64.zip и mysql-connector-c-noinstall-6.0.2-win32.zip нет этих разделений на debug и opt
PM MAIL   Вверх
leniviy
Дата 14.8.2012, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



А можно твой код?

Добавлено @ 11:54
варианты:
a) скачай полный архив: http://mirror.cogentco.com/pub/mysql/MySQL...alpha-win32.zip . Там он есть.
b) используй /NODEFAULTLIB . Правда это повлияет чтение /DEFAULTLIB из всех библиотек, не только mysqlclient.lib
c) Попробуй в двоичном редакторе заменить
Код

/DEFAULTLIB:"LIBCMT" 
/DEFAULTLIB:"libcpmt"

на пробелы. Мне это помогло убрать ошибку
Код

Error    1    error LNK2005: _calloc already defined in LIBCMTD.lib(dbgheap.obj)    libcmt.lib    

Ошибку с оператором delete воспроизвести не удалось


Это сообщение отредактировал(а) leniviy - 14.8.2012, 12:06
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.4771 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.