[英]C++ linker error LNK2019 for soci ODBC
我正在使用這一行代碼與soci構建一個c ++項目:
session sql(odbc, "DRIVER={SQL Server};SERVER=server;DATABASE=database;UID=user;PWD=pass;");
我收到此鏈接器錯誤消息:
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
我用soci構建了社交:
cmake -G "Visual Studio 12 Win64" -DWITH_BOOST=ON -DWITH_ODBC=ON -DCMAKE_BUILD_TYPE=Debug ..\soci-master\src
我還在項目中添加了包含文件夾,這似乎很好。
我還補充說:
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 12 2013解決方案。
我之前安裝了已安裝x64 Cross Tools Command Prompt
Studio 11 2012 。
我正在測試構建的Studio 2013社區版似乎沒有安裝到Studio 2013環境的快捷方式。
在構建SOCI之后,ODBC的后端沒有構建,因為它無法找到我在構建輸出中沒有注意到的include和library文件夾。
要解決此問題,我需要使用以下命令啟動命令行:
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"" x86_amd64
之后,還在解決方案中創建了ODBC項目,並且可以構建項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.