介绍
几天来,我一直在尝试成功构建和运行 MySQL 连接器/C++ 8.0.27 的测试,但我觉得我正在失去理智,因为我所做的一切似乎都不起作用。我已经阅读了每一步的文档,但我仍然遇到了同样的问题。
问题
我正在运行这个测试代码,完全没有修改。我只打算将 JDBC 接口与连接器一起使用。这些是我在编译后收到的错误:
1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl check(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?check@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl check(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<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 &)" (__imp_?check@@YAXAEBV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@@Z)
1>main.obj : error LNK2001: unresolved external symbol __imp__get_driver_instance_by_name
无论我使用预构建的 8.0.27 连接器/C++ 库,还是我自己从 8.0.27 Windows 源代码构建的库,我都会收到此错误。
这是我当前的 cmake 配置命令(“<path>”只是完整路径的其余部分):
cmake .. -DBUILD_STATIC=ON -DWITH_JDBC=ON -DCMAKE_INSTALL_PREFIX="<path>/install/mysql_connector" -DWITH_SSL="<path>/install/OpenSSL" -DWITH_BOOST="<path>/boost_1_75_0" -DWITH_MYSQL="<path>/install/MySQL"
我的理解是链接器错误意味着链接器无法在mysqlcppconn-static.lib中找到对象,尽管“dllimport”似乎暗示该程序正在寻找动态库,即使我只链接到mysqlcppconn-static.lib 而不是mysqlcppconn .lib
系统信息
- 操作系统: Windows 10 专业版、21H1
- IDE: Microsoft Visual Studio Community 2019 预览版,版本 16.11.1 预览版 1.0
- 平台工具集: Visual Studio 2019 (v142)
- Windows SDK 版本: 10.0