1

模倣ライブラリのインストール ファイルをダウンロードし、INSTALL の指示に従いました。

./configure

一連のチェックを経てメイクファイルを作成するスクリプト。

make 

この異なる .o および .lo ファイルが元のフォルダーに表示された後、cpp ファイルをコンパイルします。

make install 

多くのことをしているようですが、私が気付いているように見える唯一のことは、すべてのヘッダーファイルを含む /usr/local/include の下に模倣ディレクトリが表示されることです。

可能な限り最も単純なメインファイルをコンパイルしようとするよりも:(ライブラリサイトで提供されているように:元の例)

#include <mimetic/mimetic.h>

using namespace mimetic;

int main()
{
    MimeEntity me;
    return 0;
}

次のコマンドでコンパイルしています(CentOS 5.7、gccバージョン:4.1.2):

g++ mimetic.cpp

私が得るエラー:

/tmp/ccWnsteO.o: In function `main':
mimetic.cpp:(.text+0x80): undefined reference to `mimetic::MimeEntity::MimeEntity()'
mimetic.cpp:(.text+0x91): undefined reference to `mimetic::MimeEntity::~MimeEntity()'
collect2: ld returned 1 exit status

このことから、ヘッダー ファイルは見つかったものの、ソース/ライブラリ自体が見つからないことがわかりました。

MimeEntity コンストラクター宣言は /usr/local/include/mimetic/mimeentity.h に表示されます。mimeentityを検索すると、次のようになります。

/home/mimetic-0.9.7/mimetic/mimeentity.o
/home/mimetic-0.9.7/mimetic/mimeentity.h
/home/mimetic-0.9.7/mimetic/mimeentitylist.h
/home/mimetic-0.9.7/mimetic/mimeentity.cxx
/home/mimetic-0.9.7/mimetic/.libs/mimeentity.o
/home/mimetic-0.9.7/mimetic/mimeentity.lo
/home/mimetic-0.9.7/mimetic/.deps/mimeentity.Plo
/usr/local/include/mimetic/mimeentity.h
/usr/local/include/mimetic/mimeentitylist.h 

ライブラリへの検索パスを試してみましたが、同じエラーが表示されます

g++ mimetic.cpp -L/home/mimetic-0.9.7/mimetic/

メインの mimetic.cpp ファイルを次の行でコンパイルしようとすると、何か他の奇妙なことが起こっています

MimeEntity me;

に変更

MimeEntity me();

コンパイルします。

4

2 に答える 2

2

テスト ソース ファイルをコンパイルするときにライブラリを参照していないという理由だけで、リンカ エラーが発生しています。次のようにする必要があります。

g++ mimetic.cpp -l<libraryname>

中括弧を追加するとコンパイルされる理由は、実際には MimeEntry を返す「me」という関数を宣言しているためです。コンパイルしている間、あなたが望むことはしません。

于 2013-07-26T18:23:50.637 に答える
2

模倣例を作成するために使用しているコマンドは不完全なようです。ライブラリ検索パッチ (-L) を指定していますが、ライブラリ自体は指定していません。

  1. -L オプションが模倣ライブラリの場所を指定していることを確認してください
  2. -l'the-name-of-the-mimetic-library' を追加します。私の推測では -lmimetic
  3. ヘッダーの場所に -I (大文字の i) オプションを追加します。
于 2013-07-26T18:32:48.483 に答える