C++ 未解析的SOCI外部符号“struct SOCI::mysql\u backend\u factory const SOCI::mysql”

C++ 未解析的SOCI外部符号“struct SOCI::mysql\u backend\u factory const SOCI::mysql”,c++,mysql,visual-studio,soci,C++,Mysql,Visual Studio,Soci,我真的很困惑,我被这个问题困住了,希望你能帮助我: 我使用:Windows 8.1、Visual Studio Express 2013和SOCI 3.2.2 我已经编译了libsoci_mysql和libsoci_core并将它们链接到我的项目中,但是当我启动编译时,会出现以下错误: 错误1错误LNK2001:外部符号未解析结构soci::mysql\u后端\u工厂常量soci::mysql?mysql@soci@@3Umysql_后端_factory@1@B dbConnection.obj

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

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

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

错误1错误LNK2001:外部符号未解析结构soci::mysql\u后端\u工厂常量soci::mysql?mysql@soci@@3Umysql_后端_factory@1@B dbConnection.obj服务器


我对Window有点迷茫,但我确信找到了libsoci_mysql.lib,并且我已经用GNU emacs打开了包含符号的.lib。

看起来像是用MSVC打开的。建议的解决方法是用*soci::factory_mysql替换soci::mysql的使用。

看起来这是MSVC的一种解决方案。建议的解决方法是用*soci::factory\u mysql替换soci::mysql的使用。

如果其他人偶然发现这个问题,我会遇到类似的问题,odbc\u选项\u驱动程序\u complete没有定义

问题是,这在标头中定义为外部,并在DLL中实现。默认情况下,在构建DLL时,代码会设置一个define,以便最终为外部DLL设置uu declspecdllexport

但是,当您在代码中包含标题时,默认情况下不会为外部设置uu declspecdlimport!要触发此操作,必须在项目中定义SOCI_DLL才能设置此操作


理想情况下,您应该在Project Properties->C/C++->Preprocessor->Preprocessor Definitions

中设置此选项,以防其他人偶然发现此问题,我遇到了类似的问题,odbc选项驱动程序完整性未定义

问题是,这在标头中定义为外部,并在DLL中实现。默认情况下,在构建DLL时,代码会设置一个define,以便最终为外部DLL设置uu declspecdllexport

但是,当您在代码中包含标题时,默认情况下不会为外部设置uu declspecdlimport!要触发此操作,必须在项目中定义SOCI_DLL才能设置此操作


理想情况下,您应该在Project Properties->C/C++->Preprocessor->Preprocessor Definitions中设置此选项

谢谢!只是节省了我一些时间。谢谢!只是节省了我一些时间。