Статическое связывание MySQL в C / C

#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-разрядные библиотеки.