Ошибка связывания MySQL C Connector с GCC в Windows x64 - PullRequest
0 голосов
/ 12 октября 2019

Я установил MySQL C Connector с официальным установщиком MySQL для Windows, однако после соединения с GCC он по-прежнему выдает неопределенные ошибки ссылок.

Я попытался переустановить и установить разные версии (а именно все версии 6.0 - 6.1. 1)Я попытался изменить все '\' на '/', я попытался дать дурное имя, которое затем вызвало ошибку 'lib not found', поэтому я уверен, что я даю правильный путь.

Команда GCC:

gcc mysql_test.c -Wall -o "project_path\target\debug\mysql_test.exe" -I"C:\Program Files\MySQL\MySQL Connector C 6.1\include" -L"C:\Program Files\MySQL\MySQL Connector C 6.1\lib" -lmysql

, которая выдает

d:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\UserPC\AppData\Local\Temp\cc479zw2.o:main.c:(.text+0x23): undefined reference to `mysql_init@4'
d:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\UserPC\AppData\Local\Temp\cc479zw2.o:main.c:(.text+0x44): undefined reference to `mysql_options@12'
d:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\UserPC\AppData\Local\Temp\cc479zw2.o:main.c:(.text+0x8d): undefined reference to `mysql_real_connect@32'
d:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\UserPC\AppData\Local\Temp\cc479zw2.o:main.c:(.text+0xa2): undefined reference to `mysql_error@4'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:12: all] Error 1

, что, как мне показалось, приводит к ошибкам компоновки.

Это код, который я скопировалнепосредственно из документации:

#include <stdio.h>
#include <mysql.h>


int main() {
    MYSQL db;

    mysql_init(&db);
    mysql_options(&db,MYSQL_READ_DEFAULT_GROUP,"prj_name");

    if (!mysql_real_connect(&db,"i","correctly","set","these",0,NULL,0)) { 
        fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&db)); 
    }
    return 0;
}

Я использую (обучение) C только месяц или около того, и это первый раз, когда мне нужно связать в библиотеке.

(ожидаемые результаты - это не сгенерированные ошибки и успешная компиляция.)

Как устранить эти ошибки компоновки?

1 Ответ

0 голосов
/ 12 октября 2019

Ответ оказался нелепым и абсолютно нишевым для моего конкретного случая. Оказывается, я не только установил экземпляр Mingw32, но и указал путь, ДО Cygwin, и, таким образом, он получил полный приоритет. Как только я избавился от этого, так как все остальное было Cygwin, связь работала! Я знаю, что это полное разочарование для любого пользователя сети, который получил надежду, но что я могу сделать? Другие возможные решения вашей проблемы:

  • Лучше всего сначала поместить исходные файлы в GCC
  • . Убедитесь, что нет конфликтующих установок (мой случай)
  • Убедитесь, что, если вы установили вручную, ваша система действительно подходит для двоичного файла (проверьте, например, 32-битный вместо 64-битного)
  • И, наконец, используйте linux, потому что, очевидно, у этих парней естьлегко с apt-get и yum

Большое спасибо Shadow, который исправил мои ужасные метки, и JL2210 за попытку помочь, что было бы совершенно невозможно, если бы оглянуться назад, учитывая, насколько странным было решение.

...