1

一番下までスクロールして、更新された短い質問を一覧表示してください

私はPoDoFoを構築しています。最後のステップでは、cmake を使用して、PoDoFo 用の Visual Studio 2010 .sln ファイルを作成しています。ただし、このソリューション ファイルをビルドすると、依存ライブラリのヘッダー ファイルが見つかりません。たとえば、ブースト ライブラリのヘッダー ファイルは見つかりません。

c:\pdf\podofo-0.9.1\src\base\PdfDefines.h(66): fatal error C1083: Cannot open include file: 'boost/config.hpp': No such file or directory

ブーストを無効にすると、freetype ライブラリ ヘッダーで同様のエラーが発生します

2>..\..\src\doc\PdfFontCache.cpp(55): fatal error C1083: Cannot open include file: 'ft2build.h': No such file or directory

これが私のbuild.cmdファイルです

del cmakecache.txt

set BOOST_ROOT=C:\pdf\boost_1_51_0_code
set BOOST_INCLUDE_DIR=C:\pdf\boost\boost_1_51_0\staging\include
set BOOSTLIBDIR=C:\workspace\lib\boost\boost_1_51_0\staging\lib

set FT_INCLUDE=C:\PDF\freetype-2.4.0\include\freetype


set FTDIR=C:\PDF\freetype-2.4.0\objs\win32\vc2008
set JPEGDIR=C:\PDF\jpeg-8d\Release\lib
set TIFDIR=C:\PDF\tiff-4.0.3\lib
set ZLIBDIR=C:\pdf\zlib-1.2.8


set BUILD_FLAGS="/MT"

cmake  -G "Visual Studio 10" "C:\pdf\podofo-0.9.1" ^
    -DCMAKE_CXX_FLAGS_RELEASE:STRING=%BUILD_FLAGS%  ^
    -DFREETYPE_INCLUDE_DIR=%FT_INCLUDE% ^
    -DLIBJPEG_LIBRARY_RELEASE=jpeg ^
    -DCMAKE_INCLUDE_PATH="%INCLUDE%;%BOOST_INCLUDE_DIR%;%FT_INCLUDE%;%FT_INCLUDE%\freetype;%JPEGDIR%\jpeg;%TIFDIR%\tiff;%ZLIBDIR%\zlib" ^
    -DCMAKE_LIBRARY_PATH="%LIB%;%BOOSTLIBDIR%;%FTDIR%;%JPEGDIR%\lib;%TIFDIR%;%ZLIBDIR%\lib" ^
    -DPODOFO_BUILD_SHARED:BOOL=FALSE ^
    -DPODOFO_BUILD_STATIC:BOOL=TRUE ^
    -DWANT_BOOST:BOOL=0 ^
    -DLIBJPEG_LIBRARY_NAMES_RELEASE=jpeg ^
    -DFREETYPE_LIBRARY_NAMES_RELEASE=freetype240MT ^
    -DZLIB_LIBRARY_NAMES_RELEASE=zlibstat

私は CMake を初めて使用しますが、ライブラリの依存関係が Visual Studio プロジェクトにどのように反映されるのかわかりません。.

結果のソリューション ファイルのパスのスクリーン ショットを次に示します。これらのパスが小さなスクリプト ファイルからどのように実行されるのか理解できませんか? それらは正確には対応していないDCMAKE_LIBRARY_PATHので、どこから来たのですか?

Visual Studio プロジェクトのプロジェクト パス - スクリプト ファイルのどの部分から来ていますか?

ソリューション ファイルのインクルード エラーを修正するにはどうすればよいですか? これらのパスをプロジェクト プロパティ >> VC++ ディレクトリ >> 'インクルード ディレクトリ' に追加しようとしましたが、それでもビルドしたくありません。これらのインクルード エラーを削除しても、ライブラリ パスも間違っている可能性があるため、リンカ エラーが発生するのではないかと心配しています。これらのエラーを修正してプロジェクトをビルドするにはどうすればよいですか? ありがとう。

更新された質問

パスを次のように変更して、インクルード エラーを修正しました。

FT_INCLUDE=C:\PDF\freetype-2.4.0\include\

予想通り、多くのリンカ エラーが発生します。しかし、PoDoFo.lib ファイルが作成されたことに気付いたので、サンプル デモでこれを使用してみました。これも正常にコンパイルできましたが、次のリンカ エラーが発生します。

1>podofo.lib(PdfFont.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfDifferenceEncoding.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfFontSimple.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfIdentityEncoding.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfFontTrueType.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfFontMetricsObject.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfEncodingObjectFactory.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4

依存ライブラリがパスとともにプロジェクト設定に追加されていることを確認しましたが、なぜこれらのエラーが引き続き発生するのですか?

4

1 に答える 1

0

nmake を直接使用する代わりに、cmake-gui を使用して PoDoFo をビルドすることをお勧めします。ほとんどの場合、これは機能しないため、独自の build.cmd を作成しないでください。注:以下で説明する方法は、あなたの方法を使用しているため、従わないでください。cmake-gui を使用します (cmake または nmake がどのように機能するか正確にわからない場合)。

このサイトにアクセスして参考文献を見つけることをお勧めします: Building static podofo with MSVS 2012 これは Visual Studio 2010 で動作するはずです。覚えておいてください:

前提条件ライブラリの構築- このサイトには、これらのライブラリの構築方法に関するリンクもあります。ただし、すでにそれらを構築していると仮定します。ただし、このチュートリアルに従って再度ビルドすることをお勧めします。

指示: 彼の言う通りにしてください。プリプロセッサ定義、ランタイム ライブラリ、およびすべてのパラメータに関するオプションを見逃さないでください。何かを逃したり、何か間違ったことをしたりすると、最初からやり直さなければならなくなります。

エラー: 私自身、同じ手順に従って多くのエラーを経験しましたが、このサイトには説明がありません。一般的なエラーは次のとおりです。

未解決の外部(msvcrt.lib または libcmt.lib のいずれか)。その場合は、[リンカー] > [入力] > [特定のライブラリを無視する] に移動し、そのライブラリに名前を付けて無視します。ランダムなエラーが発生することがあります。スタック オーバーフロー自体、MSDN、または Google を調べることをお勧めします。2500 を超えるエラーで開始した後、最終的に静的ライブラリを構築することができたからです。

最後の手段:すべてがうまくいかない場合は、私に連絡してください (まだ興味がある場合は!)。

于 2014-01-30T18:39:11.480 に答える