#c #mysql #static #linker
#c #mysql #статическое #компоновщик
Вопрос:
Я пытаюсь разработать приложение, которое использует MySQL с использованием C . Я загрузил библиотеку с их веб-сайта и попытался скомпилировать следующий код:
#include <iostream>
#include <windows.h>
#include <mysql.h>
using namespace std;
int main()
{
MYSQL *connection, mysql;
MYSQL_RES *resu<
MYSQL_ROW row;
mysql_init(amp;mysql);
}
Строка, которая mysql_init(amp;mysql);
выдает мне ошибку компиляции
undefined reference to `mysql_init@4'
Я предполагаю, что это связано с ошибкой библиотеки. Я связываю mysqlclient.lib
и libmysql.lib
в таком порядке. Что мне нужно сделать, чтобы выполнить эту компиляцию, не требуя DLL-файла? Возможно ли это? Спасибо.
Примечание: я использую mingw32 в Windows 7 x64 для разработки приложения для Windows.
Ответ №1:
Возможно, эта ссылка поможет. В нем говорится, что mysqlclient.lib — это статическая библиотека, а libmysql.lib — динамическая библиотека, поэтому я не думаю, что вам следует связывать оба.
http://dev.mysql.com/doc/refman/5.0/en/building-clients.html
Комментарии:
1. Это произошло, однако после удаления одной из двух ссылок я по-прежнему получаю ту же ошибку: (
2. Вы компилируете свой код для 64-разрядной версии, но используете 32-разрядную версию библиотеки MySQL для его связывания?
3. Я компилирую 32, используя 64-битные библиотеки. Я получил 32 библиотеки, и мне удается скомпилировать программу только тогда, когда я использую обе
mysqlclient.lib
, иlibmysql.lib
, но тогда она не запустится безlibmysql.dll
, моя цель — сделать ее статически связанной. Есть идеи?4. Я скомпилировал и связал вашу программу здесь, и мне нужен был только mysqlclient. библиотека lib. Мне также нужно было установить параметр /MT (Release) и параметр /MTd (Debug). Я использовал 32-разрядные библиотеки.