簡體   English   中英

用於soci ODBC的C ++鏈接器錯誤LNK2019

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM