2012-04-19 19 views
0

GDAL(存在する場合)を使用できるC++プログラムを作成しています。私はシステム内のGDALの存在を確認することができますが、GDALを使用してプログラムをコンパイルした場合、GDALライブラリをインクルードする/含めないようにプログラムをコーディングする必要がありますか?C++プログラムでGDALライブラリをオプションとして使用するにはどうすればよいですか?

多くのありがとう、 カルロス。

+0

あなたはどのようなオペレーティングシステムを使用していますか?コンパイラは何ですか?システムを構築するのは何ですか? –

+0

Linux、g ++、cmake。 – QLands

答えて

1

私はCMakeを使用していませんが、ライブラリが利用可能な場合は、そのマクロにリンクしたり、マクロを定義するコンパイラ(たとえば-DHAVE_GDAL)にフラグを渡すこともできます。あなたのソースでは、プリプロセッサを使用してHAVE_GDALをチェックし、GDAL機能が定義されている場合にのみ使用します。あなたのソースでこのよう

何か:

#ifdef HAVE_GDAL 
// Use GDAL functionality 
#else 
// Use something else 
#endif 
+0

CMakeはすばらしいツールですが、OPの後には、GDALを使用して/使用できないようにするために、GDALをサポートするようにコンパイルされています。 – Robert

0

一般的に言えば、共有オブジェクト(DLL)にアプリケーションをリンクすると、共有オブジェクトが見つからない場合、プログラムは起動できません。起動時にSOをロードする以外の方法があるかどうかわかりません。ライブラリのハンドルを取得する場合は、dlsym(またはWindowsのGetProcAddress)を使用して必要な機能を取得し、そのように呼び出します。

+0

はい、わかっています。しかし、GDALはオプションです。私のソフトウェアはGDALヘッダーを含めることができます。では、GDALヘッダーを含めるかどうかをアプリケーションに設定する方法を教えてください。 – QLands

+0

ああ、ヘッダーを含めることはできますが、実行可能ファイルをライブラリにリンクすることはできません。 – Robert

関連する問題