0

インポートする C++ プロジェクトがあり、activemq ライブラリを使用しています。プロジェクトをインポートした後、環境の下で LD_LIBRARY_PATH 変数を設定して、

/usr/local/include/activemq-cpp-3.4.2

これにより、プロジェクトは activemq のすべてのライブラリを参照できるようになり、プロジェクト エクスプローラーの includdes フォルダーに表示されることがわかります。ビルド プロジェクトに移動すると、/usr/local/include/activemq-cpp-3.4.2 内にあるインクルード/オブジェクトの参照に対して大量のエラーが発生します。興味深いことに、バイナリはまだ生成されていますが、ライブラリ ファイルが見つからないために約 80 のエラーが発生しています。バイナリはどのように作成されますか? また、プロジェクトにこれらのファイルが適切に含まれるように、LD_LIBRARY_PATH 環境変数をどうする必要がありますか?

私は日食を起動しようとしました

./eclipse -clean

しかし、それは役に立たなかったようです。どんなアイデアでも大歓迎です。どうぞよろしくお願いします!

編集:

Redhat 4.X で C++ バージョン 4.1.2 の Eclipse Juno を使用しています。

4

2 に答える 2

2

LD_LIBRARY_PATHインクルード ディレクトリの検索には使用されません。これは、共有ライブラリを検索するディレクトリのリストをシステムに通知するために使用されます。たとえば、Eclipse の SDK ではなく、コンパイルされたサポート ライブラリです。

プロジェクトのプロパティを使用して、インクルードを検索する場所に追加する必要があります: C++ General->Paths and Symbols->Includes

また、他のライブラリとリンクする必要がある場合は、プロパティを使用しませんLD_LIBRARY_PATH: C++ General->Paths and Symbols->Library Paths

于 2012-07-23T19:35:49.593 に答える
1

ヘッダー ファイルを見つけることは、LD_LIBRARY_PATH の目的ではありません。その環境変数は、共有ライブラリ (* .soファイル) の検索を開始する場所を OS に指示します。OS は、プログラムの実行を準備するときにそれらを探します。コンパイラは、ソース コードでステートメントを検出すると、インクルードパス使用してヘッダーを検索します。#include

プログラムのコンパイルに影響を与えるために LD_LIBRARY_PATH を変更しないでください。

Eclipse では、プロジェクト オプションでインクルード パスを設定できます。

于 2012-07-23T19:35:32.530 に答える