2017-09-27 21 views
0

プロジェクトでOpenVDBライブラリを使用したいと思います。ライブラリは、\ MD(https://github.com/rchoetzlein/win_openvdbに記載されているように)を使用してリリース版のWindows7 x64で正常にコンパイルされました。 OpenVDB_cookbookも正しくコンパイルされて実行されます。自分のコードを料理本に入れれば、それもコンパイルされて正常に実行されます。OpenVDBリンカーエラー:未解決の外部シンボル

しかし、

  • 私は、既存のプロジェクトにライブラリをリンク

  • または私は新しいプロジェクトに(料理本から)同じコードを貼り付け、同じcmakelists.txtを使用してコピーする場合未解決externa:、* .cmakeファイルとプロジェクトのプロパティから、すべて同じオプションは、料理本からのよう

を探すには、リンカエラー」LNK2019を投げますL個のシンボル "void_cdecl openvdb :: v3_0_0 ::(ボイド)を初期化" 形態の機能主

があっても、最も簡単なコードで参照:

#include <openvdb.h> 
void main() 
{ 
    openvdb::initialize(); 
} 

このリンカーエラーをスロー。

私は間違って何をしていますか?私は数日間その上にあり、それを解決することができませんでした。

すべてのライブラリIlmBase、OpenEXR、glew、glfw、boostおよびOpenVDBはcmakeを使用して正常にリンクされており、プロジェクトプロパティページに存在します。

ありがとうございました。

+0

CMakeで「共有ライブラリ」を選択しましたか?もしそうなら、あなたは新しいプロジェクトにdllを運ぶ必要があります – Kev1n91

+0

@ Kev1n91コメントありがとうございました。実行可能ファイルが存在するはずのフォルダには、すべてdllがあります。これは、既にcmakelists.txtに存在するpost_copyマクロによって行われます。 共有ライブラリを選択するオプションはありません。それはcmakeのGUIにあるはずですか?または私はcmakeファイルに書き込む必要がありますか? –

+0

@ Kev1n91私の前のコメントに追加するだけです:各ライブラリに対して、 "target_link_libraries"を使って* .libファイルを追加し、cmakeファイルに "include_directories"を使ってインクルードディレクトリを追加します。 cmake GUIから、私はすべてのライブラリの* .libファイルが見つかったことを確認します。たとえば、私は "OpenVDB Library:Found */OpenVDB/lib/openvdb.lib"を手に入れた後に とVSのプロジェクトプロパティでその存在をチェックします。 "CMake Gui"の –

答えて

0

問題はdir \ srcを追加することで解決しました。 dir \ src ..を追加 - > C/C++ - > Generalの下のディレクトリにインクルードします。ここで、dirはソースとビルドのディレクトリです。なぜ私はこれを追加しなければならなかったのか分かりません。

関連する問題