3

Cairo と Visual C++ を使用して「ビジュアル」アプリケーションを作成するために必要な手順を説明するこのガイドを読みました。このガイドでは、特定の dll ファイルをダウンロードして、実行可能ファイルが作成されたディレクトリ (デバッグ) に保存することをお勧めします。以下は、Nil がチュートリアルで参照しているファイルのリストです。

  • cairo Binaries (はい、Dev パッケージには DLL が含まれていないため、binaries パッケージも必要です) -> libcairo-2.dll
  • zlib バイナリ -> zlib1.dll
  • libpng バイナリ -> libpng12-0.dll
  • Freetype バイナリ -> freetype6.dll
  • FontConfig バイナリ -> libfontconfig-1.dll
  • expat バイナリ -> libexpat-1.dll

ご覧のとおり、かなりのファイル数です。これがこれを行う「正しい」方法かどうか疑問に思っていましたか?この場合、「ベストプラクティス」と見なされる別の方法はありますか?

4

1 に答える 1

8

このアプローチには何の問題もありません。おそらく、アプリケーションを起動して実行する最も簡単な方法です。アプリケーションはこれらのライブラリを必要とするため、それらを同じフォルダーに配置すると、それらを見つけることができます。

もちろん、常に代替手段があります!

静的リンク

アプリケーションに存在しなければならない dll の束を避けるために、静的リンクを使用できます。実行時に .dll ファイルにリンクするのではなく、リンク時に .lib ファイルをリンクします。.exe は大きくなりますが、単一のファイルを配布できる可能性があります。

DLL を別のフォルダーに配置する

dll は .exe と同じフォルダーにある必要はありませんが、通常はそれが最も理にかなっています。Windows は、実行時に .dll を検索するときに複数のフォルダーを検索するため、dll を現在のディレクトリ、システム ディレクトリ (絶対にお勧めしません)、またはPATH環境変数の別のディレクトリに配置できます。実際、これらの場所はどれもお勧めしません! それらを .exe と同じフォルダーに置くのが最も安全です。通常、そのフォルダーを制御できるからです。

Windows が .dll を検索する方法に関する具体的な規則は、http: //msdn.microsoft.com/en-ca/library/windows/desktop/ms682586 (v=vs.85).aspx で概説されています。

カスタム ビルド ステップ

手動でデバッグ フォルダーまたはリリース フォルダーにファイルを配置するのは好きではありません。私はデバッグ フォルダーを、いつでも吹き飛ばして再構築できるものと考えるのが好きです。また、必要な場所にすべてを配置する 1 ステップのビルド プロセスを用意して、どのマシンでも簡単にビルドできるようにしたいと考えています。そのため、通常は、必要な .dll を "ソース" フォルダー (ソース管理内) から出力フォルダーにコピーするカスタム ビルド ステップを作成します。

于 2013-04-17T16:04:52.023 に答える