5

Qt Creator で C++ ライブラリ プロジェクトを作成しました。プロジェクトをビルドすると、libMylib.so、.so.1、.so.1.0、.so.1.0.0、Makefile、および mylib.o ファイルが作成されます。ライブラリ ヘッダーを他のプロジェクトに追加し、.pro ファイルへのパスを次のように追加しました。

LIBS += "/home/peter/Workspace/build-Libtester-Desktop-Release/libMyLib.so"

アプリケーションをビルドするとき、そのようなファイルエラーは発生しませんが、実行すると次のようになります。

/home/peter/Workspace/build-Libtester-Desktop-Debug/Libtester: error while loading shared libraries: libMyLib.so.1: cannot open shared object file: No such file or directory

パスが間違っていると、プロジェクトをビルドしようとすると、そのようなファイルやディレクトリがないというエラーが発生するため、.soのすぐ隣にあるように見えるため、理解できません。誰かが私がここで見逃していることを説明できますか?

御時間ありがとうございます。

4

2 に答える 2

4

幸いなことに、あなたの問題は Qt と Qt Creator の両方とは何の関係もありません。このエラーは、単純に、Unix OS ファミリーで動的リンクを行うためにLDが共有ライブラリを検索する方法に起因しています。

今日、私は同様の質問に答えました。てください。この質問は、Mac OS X に関して行われました。ただし、Linux と Mac OS X は、問題のコンテキストでは同じです。下部に Linux の追加説明を記載していますので、注意してください。「 」のすぐ隣にあり.soます-この仮定を行うと、Windowsのバックグラウンドがあるように見えますが、Unix OSファミリーにとっては完全に間違っています(回答にも記載されています)。さらに質問がある場合は、質問してください。

于 2013-04-17T23:31:53.310 に答える
3

ライブラリを正しく追加していません。あなたがやっている:

LIBS += "/home/peter/Workspace/build-Libtester-Desktop-Release/libMyLib.so"

それ以外の:

LIBS += -L"/home/peter/Workspace/build-Libtester-Desktop-Release" -lMyLib

最初のバージョンは Windows で動作しますが、Linux では動作しません。

基本的に、「libMyLib.so」という名前のライブラリを作成し、そのフォルダーへのパスを指定し、先頭に「-L」を追加して、最後に「-lMyLib」を実行します。「-」ではないことに注意してください。 llibMyLib」ですが、.so 名が「libMyLib」であるにもかかわらず、「-lMyLib」だけです。

詳細については、 https : //wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_applicationを参照してください。

于 2016-10-10T22:17:22.277 に答える