2017-01-01 10 views
2

私は自分のプロジェクトでライブラリを作成し、一般的に複数のファイルで作業する方法を理解しようとしています。ldが.soファイルを探していない

しかし、ldは "lhello"が見つかりませんでした(libhelloは私のカスタムライブラリです)。しかし、-l:libhello.soを使うとうまくコンパイルされます。

私はその後、--verboseオプションを使用してLDを走り、ここで私が得たものです:

[...]のlib/libhello.dll.aを開くために

試みがへ

の試みに失敗しましたオープンのlib/hello.dll.aはlibに/ libhello.aを開くために

試みに失敗した

を失敗したのlib/hello.libを開くために

の試みに失敗しました

のlib/libhello.dllを開くしようとする試みは、LIB/hello.dllを開くために

試みに失敗した

[...]

を失敗したのlib \のlibhello.aを開くために

の試みに失敗しました

リストには他のディレクトリやファイル名が載っていますが、そのうちの一つが "hello.so"か "libhello.so"ではないことが分かります。私は理由を知りませんが、ldがコンパイル時に.soファイルを探していないようです。私はここで何をしますか?

+0

を失敗したのlib/libhello.dllを開くために の試みに失敗しましたlibhello.soがインストールされていますか?ライブラリが含まれているパスが 'LD_LIBRARY_PATH'に含まれていなければ、-lは不十分です。' -L'を指定する必要があります。さらに、mingwを使って作業しているので、.soライブラリではなく.dll共有ライブラリを必要とするWindowsオペレーティングシステム上にいることになります。 – Jack

+0

私は複数のフォルダを使用していますが、私は-Lと-Iを使用しています。ありがとう、ジャック。 – NomeQueEuLembro

答えて

0

Windowsでは、共有ライブラリの末尾に.dll.soではなく)が付きます。 Windowsの共有ライブラリを生成しているMakefileを持っている場合は、.dllの拡張子が必要です。 、import librariesはあなたがLIB/hello.libを開くために、両方の

試みを参照してください理由である、使用されている

Windows上でも

がある場合は

+0

これはうまくいった!私は印象の下にあった.dllファイルは何か他のものだった。どうもありがとう! – NomeQueEuLembro