【问题标题】:SOCI external symbol unresolved "struct soci::mysql_backend_factory const soci::mysql"SOCI 外部符号未解析“struct soci::mysql_backend_factory const soci::mysql”
【发布时间】:2014-11-08 20:58:01
【问题描述】:

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

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

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

Error 1 error LNK2001: external symbol unresolved "struct soci::mysql_backend_factory const soci::mysql" (?mysql@soci@@3Umysql_backend_factory@1@B) dbConnection.obj Server

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

【问题讨论】:

    标签: c++ mysql visual-studio soci


    【解决方案1】:

    看起来它是带有 MSVC 的 known problem。建议的解决方法是将 soci::mysql 使用替换为 *soci::factory_mysql()

    【讨论】:

      【解决方案2】:

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

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

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

      理想情况下,您应该在项目属性 -> C/C++ -> 预处理器 -> 预处理器定义中设置它

      【讨论】:

      • 谢谢!只是为我节省了一些时间。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多