4

Windows 7 で c/c++ 用の Eclipse Juno を使用しています。共有ライブラリ プロジェクトと実行可能プロジェクトを作成しました。次の方法で、共有ライブラリ プロジェクトを実行可能プロジェクトの参照として追加しました。

実行可能プロジェクトのプロパティ -> C/C++ 一般 -> パスとシンボル -> 参照 -> 共有ライブラリ プロジェクトをチェック

これはすべてコンパイル時にうまく機能し、共有ライブラリ プロジェクトのクラスを実行可能プロジェクトに含めて使用することができます。

しかし、Eclipse で実行可能プロジェクトを実行しようとすると、何も得られません。エラーなし、コンソール出力なし。グーグルで調べた後、ここで同様の問題を発見しました:

http://www.eclipse.org/forums/index.php/m/650331/

上記のように、明らかに共有ライブラリ プロジェクトを Eclipse の実行可能プロジェクトに追加しても、実行時に Eclipse 内で実行可能 (.exe) ファイルの PATH に dll ファイルが追加されません。Eclipse for Java との類推として: Java JAR プロジェクト A と別の Java JAR プロジェクト B がある場合、Eclipse で B から A への参照を作成することにより、Eclipse 内でプロジェクト A を実行すると、B のコンパイルされた jar ファイルが A のクラスパスに追加されます。 . C/C++ 用の Eclipse と似ていると思っていましたが、どうやらそうではないようです。

案の定、手動で .exe ファイルと .dll ファイルを取得し、それらを同じフォルダーに配置して .exe を実行すると、すべて正常に動作します。また、実行可能プロジェクトの Eclipse のコンパイル ディレクトリに .dll ファイルをコピーすると、Eclipse から実行可能プロジェクトを実行でき、問題ありません。

私の質問は、実行可能プロジェクトを実行するようにEclipseに指示しているときに、Eclipseにその共有ライブラリプロジェクトのdllファイルをランタイムに追加させる方法はありますか? 上記のリンク先の投稿で説明されている解決策は、シャード ライブラリ プロジェクトのコンパイル ディレクトリを、実行可能プロジェクトの Eclipse の実行構成に手動で追加することです。つまり、そこの PATH 変数に追加します。しかし、これは面倒で移植性がないと思います。Eclipse が両方のプロジェクトを管理している場合、必要なものをすべてランタイムに渡すことができるはずです。

4

2 に答える 2

9

さて、実行時にライブラリ プロジェクトの dll を実行可能プロジェクトのパスに手動で追加しました。移植性を高め、プロジェクトの場所をニュートラルにする方法を見つけました (つまり、両方のプロジェクトのソース フォルダーを別のマシンに移動し、そこで Eclipse でそれらを再度開いた場合でも、動作するはずです)。

  1. 実行可能プロジェクトを右クリック -> Run as... -> Run Configurations

  2. 環境タブで「新規...」をクリックして、新しい環境変数を追加します

  3. 変数に「PATH」という名前を付け、次のような値を指定します。

    ${env_var:PATH};${workspace_loc:/cppAStar/Debug}

どこ:

  • ${env_var:PATH} は、「Eclipse で宣言されている PATH 環境変数の既存の値を取得する」という Eclipse の方法です。

  • 「;」追加しようとしている新しいものから既存の PATH エントリを分離することです

  • ${workspace_loc:/cppAStar/Debug} これは Eclipse に cppAStar という名前のワークスペース プロジェクトの場所を取得するよう指示します (ここで cppAStar は私の共有ライブラリ プロジェクトです)。それは構築されています。

私が理解できなかった問題:

  • 「実行構成」の「環境」タブには、「ネイティブ環境に環境を追加する」というオプションがあります。これを確認することで、ここで宣言する PATH 変数に .dll ディレクトリの場所を追加するだけで済み、既存の PATH に追加されると思いました。ただし、私はこの作業を行うことができなかったので、新しい値を追加する前に既存のすべての PATH を手動で再追加します
于 2012-10-24T13:28:09.553 に答える
1

残念ながら、その解決策はデバッグ構成では機能しません。バグ 338420 - 起動設定の [環境] タブの変数が gdb プロセス自体に渡されない を参照してください。

デバッグのためにこの問題を解決する方法はありますか? 次のようなビルド後の手順を実行しないことを意味します。

cmd /c copy "${BuildArtifactFilePrefix}${BuildArtifactFileName}" "${WorkspaceDirPath}\bin\"

于 2013-12-12T09:53:08.493 に答える