GDAL(存在する場合)を使用できるC++プログラムを作成しています。私はシステム内のGDALの存在を確認することができますが、GDALを使用してプログラムをコンパイルした場合、GDALライブラリをインクルードする/含めないようにプログラムをコーディングする必要がありますか?C++プログラムでGDALライブラリをオプションとして使用するにはどうすればよいですか?
多くのありがとう、 カルロス。
GDAL(存在する場合)を使用できるC++プログラムを作成しています。私はシステム内のGDALの存在を確認することができますが、GDALを使用してプログラムをコンパイルした場合、GDALライブラリをインクルードする/含めないようにプログラムをコーディングする必要がありますか?C++プログラムでGDALライブラリをオプションとして使用するにはどうすればよいですか?
多くのありがとう、 カルロス。
私はCMakeを使用していませんが、ライブラリが利用可能な場合は、そのマクロにリンクしたり、マクロを定義するコンパイラ(たとえば-DHAVE_GDAL
)にフラグを渡すこともできます。あなたのソースでは、プリプロセッサを使用してHAVE_GDAL
をチェックし、GDAL機能が定義されている場合にのみ使用します。あなたのソースでこのよう
何か:
#ifdef HAVE_GDAL
// Use GDAL functionality
#else
// Use something else
#endif
CMakeはすばらしいツールですが、OPの後には、GDALを使用して/使用できないようにするために、GDALをサポートするようにコンパイルされています。 – Robert
一般的に言えば、共有オブジェクト(DLL)にアプリケーションをリンクすると、共有オブジェクトが見つからない場合、プログラムは起動できません。起動時にSOをロードする以外の方法があるかどうかわかりません。ライブラリのハンドルを取得する場合は、dlsym(またはWindowsのGetProcAddress)を使用して必要な機能を取得し、そのように呼び出します。
あなたはどのようなオペレーティングシステムを使用していますか?コンパイラは何ですか?システムを構築するのは何ですか? –
Linux、g ++、cmake。 – QLands