MySQL 5.7 и Visual C++ . Проблема с линкованием
От: Юра Украина  
Дата: 13.11.17 14:41
Оценка:
Всем привет.

Попробую повторить вопрос из соседней ветки, вдруг ответ найдется тут

Решил попробовать сделать проект на Visual C++ (2017 студия), который бы работал с MySQL.

Скачал MySQL 5.7, все поставил. Data Connection в студии видит базу, видит схему, видит таблицы.

Установил Visual Studio connector, Connector/Net, Connector/C++. Все по инструкции .

Самый простой проект не линкуется. Пишет такое:

LNK4098 defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library SecondTry D:\dev_projects\VCPP\SecondTry\SecondTry\LINK 1


LNK4049 locally defined symbol ??0exception@std@@QEAA@AEBV01@@Z (public: __cdecl std::exception::exception(class std::exception const &)) imported SecondTry D:\dev_projects\VCPP\SecondTry\SecondTry\mysqlcppconn-static.lib(mysql_resultset_metadata.obj) 1


Какие нужны настройки проекта, чтобы он слинковался? Очень нужна помощь. Перепробовал что мог, разные типа Runtime Library (MD/MDd etc) — не могу одолеть.

Нужна помощь знатоков.
mysql visual c++
Re: MySQL 5.7 и Visual C++ . Проблема с линкованием
От: MasterZiv СССР  
Дата: 13.11.17 16:04
Оценка:
Здравствуйте, Юра, Вы писали:

Юра>Решил попробовать сделать проект на Visual C++ (2017 студия), который бы работал с MySQL.

Юра>Скачал MySQL 5.7, все поставил. Data Connection в студии видит базу, видит схему, видит таблицы.
Юра>Установил Visual Studio connector, Connector/Net, Connector/C++. Все по инструкции .

Юра>Самый простой проект не линкуется. Пишет такое:

Юра>

Юра>LNK4098 defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library SecondTry D:\dev_projects\VCPP\SecondTry\SecondTry\LINK 1


Скорее всего, нужно заново собирать эти библиотеки для connectivity c MySQL (или искать собранные в сети) под MS VC 2017.
Видимо, те собраны с более ранними версиями VC, которые используют другую версию CRT.
Также возможно ты путаешь отладочные и релизные версии этих библиотек.
Re[2]: MySQL 5.7 и Visual C++ . Проблема с линкованием
От: Юра Украина  
Дата: 14.11.17 07:00
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Здравствуйте, Юра, Вы писали:


Юра>>Решил попробовать сделать проект на Visual C++ (2017 студия), который бы работал с MySQL.

Юра>>Скачал MySQL 5.7, все поставил. Data Connection в студии видит базу, видит схему, видит таблицы.
Юра>>Установил Visual Studio connector, Connector/Net, Connector/C++. Все по инструкции .

Юра>>Самый простой проект не линкуется. Пишет такое:

Юра>>

Юра>>LNK4098 defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library SecondTry D:\dev_projects\VCPP\SecondTry\SecondTry\LINK 1


MZ>Скорее всего, нужно заново собирать эти библиотеки для connectivity c MySQL (или искать собранные в сети) под MS VC 2017.

MZ>Видимо, те собраны с более ранними версиями VC, которые используют другую версию CRT.
MZ>Также возможно ты путаешь отладочные и релизные версии этих библиотек.

Понял. Спасибо, буду пробовать
Re: MySQL 5.7 и Visual C++ . Проблема с линкованием
От: uzhas Ниоткуда  
Дата: 14.11.17 08:57
Оценка:
Здравствуйте, Юра, Вы писали:


Юра>Все по инструкции .

Юра>Перепробовал что мог, разные типа Runtime Library (MD/MDd etc) — не могу одолеть.

доку читаем и делаем строго по ней:

Choose the C++ Runtime Library to link to. In the Property Pages dialog, open C++, Code Generation in the tree view, and then select the right option for Runtime Library following these rules:

For the Community version of Connector/C++:

For version 1.1.8 and before: Link to the static version of the C++ runtime by selecting the /MT compiler option.

For version 1.1.9 and later: Link to the dynamic version of the C++ runtime by selecting the /MD compiler option. Also, target hosts running the client application need to have the Visual C++ Redistributable for Visual Studio 2013 installed.

For the Commercial version of Connector/C++: Link to the static version of the C++ runtime by selecting the/MT compiler option.

Do NOT use the /MTd or /MDd option if you are using the Oracle-built Connector/C++; see the discussion here for an explanation.

Re[2]: MySQL 5.7 и Visual C++ . Проблема с линкованием
От: Юра Украина  
Дата: 15.11.17 12:54
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, Юра, Вы писали:



Юра>>Все по инструкции .

Юра>>Перепробовал что мог, разные типа Runtime Library (MD/MDd etc) — не могу одолеть.

U>доку читаем и делаем строго по ней:

U>

U>Choose the C++ Runtime Library to link to. In the Property Pages dialog, open C++, Code Generation in the tree view, and then select the right option for Runtime Library following these rules:

U>For the Community version of Connector/C++:

U>For version 1.1.8 and before: Link to the static version of the C++ runtime by selecting the /MT compiler option.

U>For version 1.1.9 and later: Link to the dynamic version of the C++ runtime by selecting the /MD compiler option. Also, target hosts running the client application need to have the Visual C++ Redistributable for Visual Studio 2013 installed.

U>For the Commercial version of Connector/C++: Link to the static version of the C++ runtime by selecting the/MT compiler option.

U>Do NOT use the /MTd or /MDd option if you are using the Oracle-built Connector/C++; see the discussion here for an explanation.


Оказалось, что в библиотеки работают в релизе. Но после того, что я попытлся собрать релиз версию, линкер сказал, что библиотеки предназначены для _MSC_VER 1800, а не 1900, т.е. фактически, это библиотеки для VS2015. Как это все сделать по-человески пока не понимаю. Продолжаю эксперименты.
Re[3]: MySQL 5.7 и Visual C++ . Проблема с линкованием
От: Nikolaz Германия www.nikeware.com
Дата: 21.11.17 13:32
Оценка:
Здравствуйте, Юра, Вы писали:

Юра>Оказалось, что в библиотеки работают в релизе. Но после того, что я попытлся собрать релиз версию, линкер сказал, что библиотеки предназначены для _MSC_VER 1800, а не 1900, т.е. фактически, это библиотеки для VS2015. Как это все сделать по-человески пока не понимаю. Продолжаю эксперименты.

"Platform Toolset" пониже выставить в свойствах проекта? Оно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.