nanodbc错误LNK2019:无法解析的外部符号-在基本连接上

时间:2019-04-20 06:35:47

标签: c++ visual-c++ nanodbc

我正在尝试使用ODBC驱动程序使用nanodbc库和ODBC的C ++包装器来连接到MySQL数据库,但我得到error LNK2019: unresolved external symbol

我已经在nanodbc.lib所在的其他库目录中添加了已安装库目录的路径。我什至在我的源目录中复制了nanodbc.lib,但还是没有运气。

我已将nanodbc.lib添加到“属性”->“链接器”->“输入”->“其他目录”中,以防#pragma comment(lib, "nanodbc.lib")无效但仍然无效。

最糟糕的是,相同的代码在现有项目中起作用(具有不同的连接字符串)。

工具:Microsoft Visual Studio Community 2017版本15.9.11

包管理器:vcpkg

OS: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 :(得分:0)

解决了问题。 问题是由vcpkg软件包管理器创建的库。当我自己手动构建库时,该问题得到解决。无需更改代码(即使使用#pragma也是如此)。


想知道他们有什么方法可以比较这些库,以找出最初导致该问题的原因吗?