1

次のコード行を使用して、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

私は以下を使用して社会を構築しました:

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 バックエンド ライブラリが不足しているようです。どこで見つけますか?

4

2 に答える 2

0

答えはこれでした(髪の毛が残っていません):

これでcmakeを使用してソリューションを生成しています:

"Visual Studio 12 Win64"

これは、Studio 12 2013ソリューションを作成していることを意味します。

をインストールした Studio 11 2012を以前にインストールしましたx64 Cross Tools Command Prompt

ビルドをテストしている Studio 2013 Community Edition では、Studio 2013 環境へのショートカットがインストールされないようです。

これに続いて、SOCI をビルドするときに ODBC のバックエンドがビルドされませんでした。これは、ビルドの出力で気付かなかったインクルード フォルダーとライブラリ フォルダーが見つからなかったためです。

これを修正するには、次を使用してコマンドラインを開始する必要がありました。

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

その後、ODBC プロジェクトもソリューションに作成され、プロジェクトをビルドできました。

于 2015-02-28T08:28:54.160 に答える