9

画像ライブラリが必要で、FreeImage、http: //freeimage.sourceforge.net/ を調べています。アプリケーションと静的にリンクしたい。

バイナリをダウンロードしてリンクしようとしましたが、それらの関数を呼び出そうとすると、2019 リンカー エラーが発生します。

そこで、ソースをダウンロードして、「FreeImageLib.2008」を VS2010 に変換してビルドしました。それ自体で問題なくビルドできますが、それに対してリンクするときに同じ問題が発生します。それを使用するアプリケーションは、リンカーエラーについてまだ不満を持っています。

また、すべてのプロジェクト構成を他のプロジェクトと一致するように設定したため、/MDd や /MTd などと競合することはありません。

ソースを掘り下げたところ、「FREEIMAGE_LIB」のようなマクロがあり、静的ライブラリを構築するときに定義する必要があることを示唆しており、定義されていますが、それでも機能しません。

私はグーグルで調べましたが、この問題に対する確固たる答えが見つかりません。Get FreeImage to work with Visual Studio 2010に関する回答は違いはありません。ヘッダーをインクルードする前に、またはプリプロセッサの引数として既にマクロを定義しましたが、機能しません。

このライブラリは静的ライブラリとして使用するためのものではありませんか、それとも何が問題なのですか? VS2010+ で FreeImage を静的にリンクできた人はいますか?

ありがとう

4

1 に答える 1

12

はい、いくつかの Visual Studio バージョンで FreeImage を静的にリンクできました。ここでは、私が通常これを行う方法について説明します。

FreeImage には、デフォルトで、アプリにリンクするための 8 つのオプションがあります。

FreeImage - 動的リンク (dll が必要です)。

FreeImageLib - 静的リンク。

これらはそれぞれ、「デバッグ」または「リリース」構成で、Win32 または Win64 プラットフォーム用にビルドできます。

したがって、アプリに ( Static && Win32 && Debug ) および ( Static && Win32 && Release ) のバリアントが必要であるとします。また、私たちのアプリではダイナミック ランタイム ライブラリを使用しています (デフォルトでは、FreeImage は何らかの理由で静的に設定されています)。

  • 新しいバージョンをダウンロードして解凍します(または少なくとも古いディストリビューションをクリーンアップします)

  • Shift FreeImage.2008.sln+ クリックで 10 個のプロジェクトすべてを選択して開きます。次に、「プロジェクトのプロパティ / C++ / コード生成」で、「デバッグ」構成に /MDd を選択し、「リリース」に /MD を選択します。

  • 次に、「メニュー/ビルド/バッチビルド」に移動し、次を選択します。

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

そして「ビルド」を押します。

  • 選択された構成が構築されるのを待ちます。FreeImage\Dist必要なものはすべてフォルダにコピーされます

  • FreeImage\Distフォルダー チェック ファイル内: delete.me FreeImage.h FreeImage.lib FreeImaged.lib 作成日時を確認します。焼きたてで熱々でなければなりません。FreeImage\Source\FreeImageLib\Debugそうでない場合は、とからコピーしますFreeImage\Source\FreeImageLib\Release

  • メイン アプリケーションで、include と lib に追加し、デバッグ構成とリリースFreeImage\Distにリンクします。FreeImaged.libFreeImage.lib
  • ソース ファイルに含める:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • 電話してみる FreeImage_Initialise(); FreeImage_DeInitialise();

  • それはうまくいくはずです

ハッピーコーディング!

于 2013-04-24T13:55:59.373 に答える