2

他の人がスペルチェッカー機能を使用できるようにしたいので、静的ライブラリを使用して簡単なスペルチェッカープログラムを作成しています。2つの問題領域は、ライブラリのソースコードとライブラリのヘッダーにあります。ライブラリをコンパイルすると、次のエラーが発生します。

 ar -cvq libspellcheck.a checker.o
    a - checker.o
    g++ -o spell-check main.o meta.o libspellcheck.a
    libspellcheck.a(checker.o): In function `check_spelling(char*, char*)':
    checker.cpp:(.text+0x0): multiple definition of `check_spelling(char*, char*)'
    libspellcheck.a(checker.o):checker.cpp:(.text+0x0): first defined here
    collect2: ld returned 1 exit status
    make: *** [spellcheck] Error 1

checker.cppコードはここにあります。ヘッダーファイル(spellcheck.h)はここにあります

私が知りたいのは、私には理解できないので、上記のエラーの原因です。

4

2 に答える 2

3

問題はchecker.cppを2回リンクしているようです-makefileを追加できますか(check_spellingがchecker.cppで2回定義されていないことを確認し、ビルド前に中間ファイルをクリーンアップしてみてください)?

于 2013-01-06T17:32:58.313 に答える
3

checker.cppアーカイブに2回追加したようです。

代わりに次のコマンドを使用してみてください。

ar -cvr libspellcheck.a checker.o

rの代わりにを使用qすると、ファイルの別のコピーを追加するのではなく、同じ名前の既存のファイルが置き換えられます。

または、ファイルを追加する前にアーカイブを削除して、常に空で開始するようにしてください。

于 2013-01-06T18:25:06.393 に答える