2016-08-13 15 views
0

私はアプリケーションでOpenSceneGraphライブラリを使用しています。これらを静的にリンクしたいので、バイナリでDLLを運ぶ必要はありません。 OpenSceneGraph 3.4.0のソースをダウンロードし、cmakeによってVisual Studioプロジェクトを生成しました。私はcmake GUIでDYNAMIC_OPENSCENEGRAPHDYNAMIC_OPENTHREADSを無効にしました。その後、私は正常にOSGをコンパイルし、静的ライブラリ(.lib)を持っています。私のアプリケーションでは、インクルードとライブラリのディレクトリをproject properties -> VC++ Directories -> Include Directories & Library Directoriesに追加しました(私はVisual Studio 2013を使っています)。私はまた、Linker -> General -> Additional Library Directories中のOSGの.lib年代のディレクトリを追加し、Linker -> Input -> Additional Dependenciesに必要なlibsのすべてを入力:スタティックリンクで未解決の外観Visual StudioのOpenSceneGraphライブラリ

ot20-OpenThreads.lib 
osg130-osg.lib 
osg130-osgUtil.lib 
osg130-osgGA.lib 
osg130-osgDB.lib 
osg130-osgViewer.lib 
osg130-osgText.lib 
opengl32.lib 
osgdb_3ds.lib 
osgdb_freetype.lib 
osgdb_png.lib 

そして、私はまだOSGのシンボルの未解決の外部エラーを取得しています。私もGeneral -> Character SetをUnicodeに設定しようとしましたが、それは助けになりませんでした(cmakeによって生成されたOSGプロジェクトでは、マルチバイト文字をとにかく持っていました)。私は今、それを解決するためのアイデアはありません。静的リンクライブラリを使ってアプリケーションをコンパイルするのは初めてのことです。

本当に助けていただければ幸いです。

p.s.申し訳ありませんコードはありませんが、私はそれを提供することはできませんが、できる限り多くの詳細を提供しようとしています。動的リンクを使用すると、問題なくアプリケーションを構築できます。

答えて

0

私はこの問題を自分で解決することができました。 私はLinker -> Input -> Additional Dependenciesにさらに2つのライブラリが行方不明になった:

msvcrt.lib 
libcmt.lib 

を私もC/C++ -> Preprocessor -> Preprocessor Definitionsでプリプロセッサ定義OSG_LIBRARY_STATICを追加する必要がありました。最後は、OSGのプラグインをリンクするために、私のmain.cppに、コードのこれらのいくつかの行を追加しました:

#ifdef OSG_LIBRARY_STATIC 
    USE_OSGPLUGIN(freetype) 
    USE_OSGPLUGIN(png) 
    USE_OSGPLUGIN(3ds) 
#endif 

今私のアプリケーションが正常にコンパイルして:)

P.S.を働いています最初のビルドでは、libpngとfreetypeのために.lib-sがないためにPNGとFreeTypeプラグインでエラーが発生しました。私の場合は、libpng16_static.libfreetype250.libLinker -> Input -> Additional Dependenciesに追加し、それらを私のライブラリディレクトリにコピーすることでエラーを解決しました(他のプラグインは他のライブラリに依存することは明らかです)。

関連する問題