SOCI外部符号未解析“struct soci :: mysql_backend_factory const soci :: mysql”

问题描述 投票:1回答:2

我真的很困惑,我坚持这个问题,我希望你能帮助我:

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

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

错误1错误LNK2001:外部符号未解析“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
2个回答
1
投票

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.