2013-04-24 14 views
8

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

バイナリをダウンロードしてリンクしてみましたが、機能を呼び出そうとすると2019リンカエラーが発生します。

私はソースをダウンロードしようとしましたが、 "FreeImageLib.2008"をVS2010に変換してビルドしました。それだけでうまく構築されますが、私はそれとリンクするときに同じ問題を抱えています。それを使用する私のアプリケーションは依然としてリンカのエラーに苦情を受けます。

私はいくつかの彼らの元に掘ったとFREEIMAGE_LIB」のようなマクロがあり、私はまた私の他のプロジェクトと一致するように、すべてのプロジェクト構成を設定し、これなど/ MDDまたは/ MTdに、との競合がない..

静的ライブラリを構築するときに定義する必要があると示唆されています。定義されていますが、それでも動作しません。

私は周りを探索し、この問題に対する確かな答えを見つけることができません。 Getting FreeImage to work with Visual Studio 2010の答えは違いはありません。私は既にヘッダーを含める前に、またはプリプロセッサの引数としてマクロを定義しましたが、それは動作しません。

このライブラリは静的ライブラリとして使用することを目的としていないか、問題の可能性がありますか? FreeImageを静的にVS2010 +にリンクできた人はいますか?

おかげ

答えて

11

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

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

FreeImage - ダイナミックリンクを(あなたは、DLLが必要になります)。

FreeImageLib - 静的リンク。

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

だから、我々が必要と仮定(静的& &のWin32 & &デバッグ)と(静的& &のWin32 & &リリースは)我々のアプリのための変異体です。また、我々のアプリでは、我々は通常、得た方法ダイナミックランタイムライブラリ (デフォルトでは、FreeImageが何らかの理由で静的用に設定)を使用します。

  • ダウンロードし、新鮮なバージョンを展開(または少なくとも古いdistibをクリーンアップ)

  • オープンFreeImage.2008.sln Shift +クリックで10個のプロジェクトすべてを選択します。次に、 "Project Properties/C++/Code generation"で "Debug"設定の/ MDdと "Release"の/ MDを選択します。

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

を押し、 "構築":

  • はその後、我々は "メニュー/ /バッチビルドを構築する" に進み、選択します。

    • 選択された構成が構築されるのを待ちます。すべての私たちが必要なものFreeImage\DistフォルダのチェックファイルにFreeImage\Distフォルダ

    • にコピーされます。 delete.me FreeImage.h FreeImage.lib FreeImaged.lib チェック作成日時。それは焼きたての新鮮でなければならない。そうでない場合は、FreeImage\Source\FreeImageLib\DebugFreeImage\Source\FreeImageLib\Releaseからコピーしてください。

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

      #define FREEIMAGE_LIB

      #include "FreeImage.h"

    • は、それは

    を動作するはず FreeImage_Initialise(); FreeImage_DeInitialise();

  • を呼び出すようにしてください

    ハッピーコーディング!

  • +0

    私のために働いた。他の人たち(Magick ++、OIIO)の中でも、FreeImageは一番簡単なものです。 – pelesl

    関連する問題