14

まず、リンカー/ライブラリの下にライブラリを設定するか、「パスとシンボル」の下にライブラリを設定すると、混乱します。同じだと思います。私は正しいですか?

私の質問のためにとにかく-私は静的ライブラリをリンクする必要があるので、私はいくつかのことを試しました:

まず、リンクライブラリにgtest(これはライブラリです)とgtestパスを追加してみます。このようにして、コンパイルおよびリンクは正しく行われましたが、実行時に失敗しました。これは、共有ライブラリをロードしようとしたときに(静的ライブラリが必要です!)エラーが発生する ためです。

共有ライブラリのロード中にエラーが発生しました:libgtest.so.0

2回目の試行-パスとシンボルで定義して、完全なパス'/root/workspace/gmock/gtest/lib/.lib/libgtest.a'をライブラリに追加してみます。この場合、リンケージでエラーが発生しました:

g++ -L/root/workspace/gmock/lib/.libs -L/root/workspace/gmock/gtest/lib/.libs -o "playground"  ./src/p.o ./src/playground.o   -lpthread -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a -l/root/workspace/gmock/lib/.lib/libgmock.a
/usr/bin/ld: cannot find -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a

この投稿は答えを与えるものではなく、静的なものと共有されたものに対して異なるリンクを定義する方法を説明していません。

ありがとうございました

4

3 に答える 3

17

多くの調査の後、関連する回答ではありません。それを見つけた!!!eclipse-cdt のこの便利なリンクで見つけました

どうやら、ライブラリはワークスペースに存在する必要があります。

于 2012-07-25T07:40:49.070 に答える
1

ここでは説明しませんが、Botan 暗号化ライブラリを静的ライブラリとして構築しました。インターウェブですべての手順を実行したら、ライブラリ パスを追加し、「lib」と「. a」、私のプロジェクトは問題なくビルドされましたが、実行すると、「プログラムが予期せず終了しました」(または同様の)エラーが発生し続けました。最後に、それを修正する方法を見つけました。メニュー バーで、[プロジェクト] > [プロパティ] > [C/C++ ビルド] > [設定] > [クロス G++ リンカー] に移動し、 と-staticの間に追加する${COMMAND}${FLAGS}、行全体が次のようになります。

${COMMAND} -static ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

あなたのものは異なる場合があります。Windows 8.1でgcc 4.9.2を使用するmingw-w64 mingw-buildsプロジェクトで、Eclipse Luna Service Release 2 (4.4.2)を使用しています。

于 2015-03-19T00:20:47.720 に答える