1

我真的很困惑,我被这个问题困住了,我希望你能帮助我:

我使用:Windows 8.1、Visual Studio Express 2013 和 SOCI 3.2.2

我已经编译了 libsoci_mysql 和 libsoci_core 并将它们链接到我的项目中,但是当我启动编译时出现此错误:

错误 1 ​​错误 LNK2001: external symbol unresolved "struct soci::mysql_backend_factory const soci::mysql" (?mysql@soci@@3Umysql_backend_factory@1@B) dbConnection.obj 服务器

我对 Window 有点不知所措,但我确信 libsoci_mysql.lib 已找到并且(我已使用 GNU emacs 打开 .lib)包含这些符号。

4

2 回答 2

3

看起来这是 MSVC 的一个已知问题。建议的解决方法是soci::mysql*soci::factory_mysql().

于 2015-02-17T03:31:58.220 回答
3

万一其他人偶然发现了这个,我遇到了一个odbc_option_driver_complete未定义的类似问题。

问题是这在标头中定义为外部并在 DLL 中实现。默认情况下,在构建 DLL 时,代码会设置 #define 以最终__declspec(dllexport)为外部设置。

但是,当您在代码中包含标头时,默认情况下它不会__declspec(dllimport)为外部设置!要触发它,您必须#define SOCI_DLL在您的项目中进行设置。

理想情况下,您应该在 Project Properties -> C/C++ -> Preprocessor -> Preprocesor Definitions 中进行设置

于 2018-09-07T18:44:09.333 回答