我真的很困惑,我坚持这个问题,我希望你能帮助我:
我使用: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)包含符号。
看起来它是与MSVC的known problem。建议的解决方法是用soci::mysql
替换*soci::factory_mysql()
用法。
如果其他人偶然发现了这一点,我遇到了类似的问题,其中odbc_option_driver_complete
未定义。
问题是,这在头部定义为外部并在DLL中实现。默认情况下,在构建DLL时,代码会设置#define以最终为外部设置__declspec(dllexport)
。
但是,当您在代码中包含标题时,默认情况下不会为外部设置__declspec(dllimport)
!要触发这个,你必须在你的项目中使用#define SOCI_DLL
进行设置。
理想情况下,您应该在项目属性 - > C / C ++ - >预处理器 - >预处理器定义中进行设置