Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
YaMolekula
14 / 14 / 2
Регистрация: 03.02.2010
Сообщений: 142
#1

Ошибка lnk2019 при подключении к MySQL - C++

27.10.2011, 10:52. Просмотров 1089. Ответов 8
Метки нет (Все метки)

Доброго Времени Суток! В общем, я нашел здесь небольшой туториал по взаимодействию с MySQL и попытался запустить следующий код, кинув предварительно все lib и заголовочные файлы в стандартные директории:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
 
#define __LCC__ // Объявляем директиву без которой программа не может работать. Можно конечно поключить windows.h, но это будет не красиво
 
#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#pragma comment(lib,"mysqlclient.lib ")
#include <mysql.h> // Заголовочный файл с описание функций
#include <stdio.h>
#include <conio.h>
 
void mysql(const char query[])
{
    MYSQL mysql; // Дескриптор соединения
    MYSQL_ROW row; // Массив полей текущей строки
    MYSQL_RES *res; // Дескриптор результирующей таблицы
    MYSQL_FIELD *field;
 
    char host[] = "localhost"; // хост
    char user[] = "admin"; // пользователь
    char passwd[] = "admin"; // пароль
    char db[] = "library"; // название базы данных
    int port = 0; //  порт. Если порт у сервера MySQL не по умолчанию (3306), то нужно указывать конкретный номер порта
 
    mysql_init(&mysql);  // Инициализация
    mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, 0); // соединение
 
    if (mysql_query(&mysql, query) > 0) // запорс. Если ошибок нет, то продолжаем работу
        {
            
            // Если была ошибка, ...
            printf("%s", mysql_error(&mysql));  // ... вывдем ее
            return; // и завершим работу
        } 
 
    res = mysql_store_result(&mysql); // Берем результат,
    int num_fields = mysql_num_fields(res); // количество полей
    int num_rows = mysql_num_rows(res); // и количество строк.
 
    for (int i = 0; i < num_fields; i++) // Выводим названия полей
    {
      field = mysql_fetch_field_direct(res, i); // Получение названия текущего поля
      printf("| %s |", field->name);
    }
 
    printf("\n");
    
    for (int i = 0; i < num_rows; i++) // Вывод таблицы
    {
      row = mysql_fetch_row(res); // получаем строку
 
      for (int l = 0; l < num_fields; l++)
        printf("| %s |", row[l]); // Выводим поля
        
      printf("\n");
    }
    
    printf("Count records = %d", num_rows); // Вывод информации о количестве записей
    mysql_free_result(res); // Очищаем результаты
    mysql_close(&mysql); // Закрываем соединение
}
 
int main()
{
  mysql("SELECT * FROM t_mid_author"); // Запрос
  getch(); // Ожидаем нажатие клавиши
  return 0;
}
1>------ Построение начато: проект: tutoMySQL, Конфигурация: Debug Win32 ------
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_close@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_free_result@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_fetch_row@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_fetch_field_direct@8 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_num_rows@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_num_fields@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_store_result@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_error@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_query@8 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_real_connect@32 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_init@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>C:\CPPWORK\DBWork\tutoMySQL\Debug \tutoMySQL.exe : fatal error LNK1120: 11 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Что можно сделать в случае такой ошибки, что бы устранить её?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2011, 10:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка lnk2019 при подключении к MySQL (C++):

Error LNK2019 при компиляции программы MPI - C++
Здравствуйте! Это уже становится чересчур.. все решения перепробованы. Вобщем, на VS 2012 устанавливаю MS SDK MPI. В свойствах проекта...

Исправить ошибки линковки при подключении библиотек Ilu - C++
Здравствуйте подскажите как исправить, уже 2 день пытаюсь и ничего не получается. Подключил библиотеки в вижак, скинул либы в папку либ,...

Ошибка MySQL - C++
Здравствуйте. Решил попробовать использовать таблицы MySQL в программе С++, но при подключении &quot;mysql.h&quot; компилятор начинает ругаться, мол...

Ошибка при подключении MySQL к C++ Builder 6 - C++ Builder
Знаю, что это тема много раз поднималась на множестве форумах. Но перелопатив кучу ссылок, я так и не нашла ответа на свой вопрос. ...

ошибка при статическом подключении DLL - C++ Builder
при компиляции Embarcadero Rad Studio 2010 выдает ошибку:

Ошибка при подключении AlphaControls C++ Builder - C++ Builder
Скачал с сайта http://www.alphaskins.com/dwnld.php компоненты для своей версии программы. После этого пошёл по инструкции:...

8
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
27.10.2011, 13:31 #2
это -
Цитата Сообщение от YaMolekula Посмотреть сообщение
#include <mysql.h> // Заголовочный файл с описание функций
замени на это -
C
1
2
3
extern "C" {
#include <mysql.h> // Заголовочный файл с описание функций
}
Добавлено через 1 минуту
Цитата Сообщение от YaMolekula Посмотреть сообщение
#pragma comment(lib,"mysqlclient.lib ")
и здесь, помоему, должна быть libmysqlclient.lib
1
YaMolekula
14 / 14 / 2
Регистрация: 03.02.2010
Сообщений: 142
27.10.2011, 22:28  [ТС] #3
Цитата Сообщение от niXman Посмотреть сообщение
это -

замени на это -
C
1
2
3
extern "C" {
#include <mysql.h> // Заголовочный файл с описание функций
}
Добавлено через 1 минуту

и здесь, помоему, должна быть libmysqlclient.lib
К сожалению, после изменений всё-равно выдаются эти ошибки.
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
27.10.2011, 23:48 #4
ты все правильно изменил?
покажи как оно теперь выглядит?
0
YaMolekula
14 / 14 / 2
Регистрация: 03.02.2010
Сообщений: 142
28.10.2011, 22:52  [ТС] #5
Код полчился такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "stdafx.h"
 
#define __LCC__ // Объявляем директиву без которой программа не может работать. Можно конечно поключить windows.h, но это будет не красиво
#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#pragma comment(lib,"mysqlclient.lib ")
extern "C" {
  #include <mysql.h> // Заголовочный файл с описанием функций
}
#include <stdio.h>
#include <conio.h>
 
void mysql(const char query[])
{
    MYSQL mysql; // Дескриптор соединения
    MYSQL_ROW row; // Массив полей текущей строки
    MYSQL_RES *res; // Дескриптор результирующей таблицы
    MYSQL_FIELD *field;
 
    char host[] = "localhost"; // хост
    char user[] = "admin"; // пользователь
    char passwd[] = "admin"; // пароль
    char db[] = "library"; // название базы данных
    int port = 0; //  порт. Если порт у сервера MySQL не по умолчанию (3306), то нужно указывать конкретный номер порта
 
    mysql_init(&mysql);  // Инициализация
    mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, 0); // соединение
 
    if (mysql_query(&mysql, query) > 0) // запорс. Если ошибок нет, то продолжаем работу
        {
            
            // Если была ошибка, ...
            printf("%s", mysql_error(&mysql));  // ... вывдем ее
            return; // и завершим работу
        } 
 
    res = mysql_store_result(&mysql); // Берем результат,
    int num_fields = mysql_num_fields(res); // количество полей
    int num_rows = mysql_num_rows(res); // и количество строк.
 
    for (int i = 0; i < num_fields; i++) // Выводим названия полей
    {
      field = mysql_fetch_field_direct(res, i); // Получение названия текущего поля
      printf("| %s |", field->name);
    }
 
    printf("\n");
    
    for (int i = 0; i < num_rows; i++) // Вывод таблицы
    {
      row = mysql_fetch_row(res); // получаем строку
 
      for (int l = 0; l < num_fields; l++)
        printf("| %s |", row[l]); // Выводим поля
        
      printf("\n");
    }
    
    printf("Count records = %d", num_rows); // Вывод информации о количестве записей
    mysql_free_result(res); // Очищаем результаты
    mysql_close(&mysql); // Закрываем соединение
}
 
int main()
{
  mysql("SELECT * FROM t_mid_author"); // Запрос
  getch(); // Ожидаем нажатие клавиши
  return 0;
}
Ошибки возникают примерно такие же:
1>------ Построение начато: проект: tutoMySQL, Конфигурация: Debug Win32 ------
1> tutoMySQL.cpp
1>c:\cppwork\dbwork\tutomysql\tutomysql\tutomysql.cpp(44): warning C4244: инициализация: преобразование "my_ulonglong" в "int", возможна потеря данных
1>c:\cppwork\dbwork\tutomysql\tutomysql\tutomysql.cpp(72): warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\conio.h(128): см. объявление "getch"
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_close@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_free_result@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_fetch_row@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_fetch_field_direct@8 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_num_rows@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_num_fields@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_store_result@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_error@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_query@8 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_real_connect@32 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_init@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>C:\CPPWORK\DBWork\tutoMySQL\Debug\tutoMySQL.exe : fatal error LNK1120: 11 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Если поставить libmysqlclient.lib, то пишет:
1>LINK : fatal error LNK1104: не удается открыть файл "libmysqlclient.lib "

Может это связано с тем, что я использовал Express-версию?
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2011, 14:07 #6
libmysql.lib и libmysqlclient.lib откуда взяты и где лежат?
0
YaMolekula
14 / 14 / 2
Регистрация: 03.02.2010
Сообщений: 142
31.10.2011, 07:14  [ТС] #7
Я их взял из "С:\Program Files\MySQL\MySQL Server 5.5\lib\" и скопировал в папку "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\"
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
31.10.2011, 15:49 #8
Цитата Сообщение от YaMolekula Посмотреть сообщение
#pragma comment(lib,"mysqlclient.lib ")
тут должно быть libmysqlclient.lib.
0
YaMolekula
14 / 14 / 2
Регистрация: 03.02.2010
Сообщений: 142
01.11.2011, 23:17  [ТС] #9
Я там нашёл только файл mysqlclient.lib, при изменении в коде на libmysqlclient.lib появляется ошибка:
LNK1104: не удается открыть файл "libmysqlclient.lib"
0
01.11.2011, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2011, 23:17
Привет! Вот еще темы с ответами:

Ошибка при подключении шестого клиента к серверу - C++ Builder
5 клиентов подключаются как положено, а при подключении 6-ого выскакивает следующая ошибка: Что сделано не так? Где ошибка?:( Вот...

Ошибка выполнения libcurl в потоке при динамическом подключении - C++ Builder
Всех С новым годом. Имею функцию bool __fastcall TForm3::PostHesh(AnsiString Hesh) { CURL *curl; CURLcode res; ...

Ошибка при подключении к XE3 библиотеки для VS: "Please use native wchar_t type (/Zc:wchar_t)" - C++ Builder
Господа, пытаюсь прикрутить к билдеру библиотеку для работы с автокадом. К сожалению она жестко прибита гвоздями к microsoft visual studio...

Ошибка при подключении заголовочного файла: "error LNK2019: unresolved external symbol" - C++
Добрый день. Я что то не могу разобраться как работают эти заголовки на с++(вижуал студия). Создал Test.h В нём написал ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru