Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;soci ODBC的链接器错误LNK2019 我用SoCI构建一个C++项目,使用这个代码行: session sql(odbc, "DRIVER={SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=pass;");_C++_Visual Studio_Linker_Static Linking_Soci - Fatal编程技术网

C++;soci ODBC的链接器错误LNK2019 我用SoCI构建一个C++项目,使用这个代码行: session sql(odbc, "DRIVER={SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=pass;");

C++;soci ODBC的链接器错误LNK2019 我用SoCI构建一个C++项目,使用这个代码行: session sql(odbc, "DRIVER={SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=pass;");,c++,visual-studio,linker,static-linking,soci,C++,Visual Studio,Linker,Static Linking,Soci,我收到以下链接器错误消息: Error 1 error LNK2019: unresolved external symbol "public: __cdecl soci::session::session(class soci::backend_factory const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>

我收到以下链接器错误消息:

Error   1   error LNK2019: unresolved external symbol
"public: __cdecl soci::session::session(class soci::backend_factory const
 &,class std::basic_string<char,struct std::char_traits<char>,class
 std::allocator<char> > const &)" (??
 0session@soci@@QEAA@AEBVbackend_factory@1@AEBV?$basic_string@DU
 $char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function main
 D:\Development\Private\K\kserver\kserver\main.obj  kserver
我还将include文件夹添加到项目中,这似乎很好

我还补充说:

D:\Development\Tools\lib\soci\lib\Debug
到链接器目录

如果我只使用以下工具进行构建,则它会起作用:

session sql()

我好像错过了ODBC后端库。我在哪里能找到这个呢?

我宁愿把它作为一个评论,但我没有足够的声誉。 可能缺少soci backend.h。 文件soci odbc.h将有一行包含soci backend.h 只需检查此包含是否有效。 如果无法正常工作,则无法从soci odbc.h访问soci backend.h,这就是问题的原因。 如果我没记错的话,那么soci backend.h可能位于soci odbc.h的正上方的目录中。对soci odbc.h中的include进行更改,事情可能会开始工作

希望这有帮助

答案是(没有头发了):

我正在使用cmake生成解决方案,其中包括:

"Visual Studio 12 Win64"
这意味着我正在创作一个Studio 122013解决方案

我以前安装过Studio 112012,它安装了
x64跨工具命令提示符

我正在测试构建的Studio 2013社区版似乎没有安装Studio 2013环境的快捷方式

在构建SOCI时,没有构建ODBC后端,因为它找不到包含和库文件夹,我在构建输出中没有注意到这些文件夹

要解决此问题,我需要使用以下命令启动命令行:

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"" x86_amd64
之后,在解决方案中还创建了ODBC项目,可以构建该项目

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"" x86_amd64