Ошибка nanodbc LNK2019: неразрешенный внешний символ - при базовом соединении - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь подключиться к базе данных MySQL, используя драйвер ODBC, используя библиотеку nanodbc, оболочку C ++ для ODBC, но я получаю error LNK2019: unresolved external symbol

Я добавил путь к каталогу установленной библиотеки в каталоге дополнительной библиотеки, гдеnanodbc.lib находится.Я даже скопировал nanodbc.lib в мою исходную директорию, но все равно не повезло.

Я добавил nanodbc.lib в Свойства-> Linker-> Input-> Дополнительные каталоги на случай, если #pragma comment(lib, "nanodbc.lib") не работает, но все еще работаетне работает.

Хуже всего то, что тот же код работает в существующем проекте (с другой строкой подключения).

Инструменты: Microsoft Visual Studio Community 2017 Версия 15.9.11

Диспетчер пакетов: vcpkg

ОС: Windows 10 Professional, 64-разрядная

Стандарт языка: C ++ 17

Код:

#include <iostream>
#include <nanodbc/nanodbc.h>

#pragma comment(lib, "nanodbc.lib")

int main()
{
    nanodbc::string dns = "PLC_Interface";
    nanodbc::string user_name = "root";
    nanodbc::string password = "rooot";
    nanodbc::connection conn(dns, user_name, password);
    std::cout << conn.connected() << std::endl;
    //std::cout << "Database Name : " <<conn.database_name() << std::endl;
    //std::cout << "DBMS Name : " <<conn.dbms_name() << std::endl;
    //std::cout << "DBMS Version : " <<conn.dbms_version() << std::endl;
    conn.disconnect();
    std::cout << conn.connected() << std::endl;
}

Ошибка:

error LNK2019: unresolved external symbol "public: __cdecl nanodbc::connection::connection(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,long)" (??0connection@nanodbc@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@00J@Z) referenced in function main

1 Ответ

0 голосов
/ 20 апреля 2019

Решил проблему. Проблема была с библиотекой, созданной менеджером пакетов vcpkg. Когда я собрал библиотеку вручную, проблема была решена. Нет необходимости в изменении кода (даже при работе с #pragma).


Желание узнать, есть ли у них какой-либо способ сравнить библиотеки, чтобы выяснить, почему проблема возникла в первую очередь?

...