libexif を Visual Studio 2010 でコンパイルできますか? 私はそうしようとしてきましたが、多くの問題に直面しています。誰かが以前にこれを成功させたかどうかについての情報は見つかりません。MinGW を使用してライブラリをコンパイルできることはわかっていますが、Visual Studio でコンパイルし、Visual C++ アプリからリンクする必要がある状況にあります。これは可能ですか?
2 に答える
あなたの質問に答えるには:はい、可能です...しかし、それは少しハックです。Libexif は、MSVC が実装しないことを選択した関数を使用します。以下の VS2010 プロジェクトの実例を参照してください (ファイルのダウンロードが気に入らない場合は、以下の動作に必要な変更についての説明にスキップしてください)。
https://www.dropbox.com/s/l6wowl8pouux01a/libexif-0.6.21_CompiledInVS2010%2BExample.7z?dl=0
詳しく説明すると、「ハック」が必要な問題は次のとおりです (LibExif readme-win32.txt ドキュメントで示唆されているように)。
Libexif はいくつかの場所でインラインを使用しますが、これは VS for C では定義されておらず、C++ のみで定義されています (これを参照)
Libexif は、VS で定義されていないコードで snprintf を広範囲に使用します (こちらを参照) 。
./configure コマンドを使用せずに config.h を自分で作成する必要があります。スクリプトを一通り読むことはできますが、そのほとんどは Windows VS2010 では意味がありません。
GETTEXT_PACKAGE はおそらく構成ファイルで設定されているため、定義する必要があります。それが正しいかどうかはわかりませんが、UTF-8 を選択するだけです。
VS の C では、関数内に特定の方法で新しい変数を作成することができないため、.c ファイルから .h ファイルに移動する必要があるランダムな符号なし static *がありました。
「readme-win32.txt」ファイルをお読みください。アドバイスは次のとおりです。
どういうわけかビルドシステムをハックしてください。
これはWindowsのやり方のようです。
期待しないでください。*nix のやり方は、最初に実行する必要がある構成スクリプトです。ソース ファイルを自動生成して、ライブラリを特定のフレーバーの *nix に結合します。構成スクリプトは、ほぼ 0.5 メガバイトです。実際の .c ファイルの 3 倍のコードです :) スクリプトを実行できるように、MinGW なしでは合理的に動作させることはできません。それが完了したら、VS ソリューションを使用してより良いショットを得ることができます。C99 固有の構文をあまり使用しない限り。