0

私は何か間違ったことをしていると確信していますが...同じバージョンのUbuntuがインストールされ、同じバージョンのg ++​​がインストールされた1台のコンピューターでc ++プロジェクトに取り組み、そこで正常にコンパイルされました。自宅で作業できるように、ファイルを DropBox フォルダーに入れました。まったく同じファイルがここにあり、まったく同じ g++ コマンドでエラーが発生します。いくつかの「「 _」の複数定義」エラーが発生しています。

ここで私が間違っていることを誰かが知っていますか?

エラー例:

g++ -o*.C *.cpp

/tmp/ccdFZtkq.o:(.bss+0x718): multiple definition of `done'
4

3 に答える 3

1

問題は、DropBox が「中間」状態にあると最もよく説明できるファイルにサフィックスを追加していたことです。DropBox は、中間状態にないサフィックスのないファイルも作成しました。何が起こったのかはまだよくわかりませんが、g++ が実行されると、中間ファイルと非中間ファイルの両方が使用され、基本的に同じファイルが複数回読み込まれるという問題が発生しました。

DropBoxフォルダーからファイルを削除して再コンパイルすることで問題を解決し、完全に正常に機能しました。

于 2012-05-21T14:07:48.030 に答える
0

クリーンビルドを行います。古いオブジェクト ファイルをすべて削除し、再度コンパイルします。

rm -rf *.o
g++ -o *.C *.cpp

私の推測エンジンは燃料を使い果たしました。doneDropBoxにあるファイル、宣言と定義などに関するコードと情報を示さない限り、より良い答えを出すことはできません.

于 2012-05-02T01:32:55.447 に答える
0

これをシェルに入力します。

g++ -o*.C *.cpp

ただし、これにより、シェルがコマンドを生成します。ほとんどの場合、2 つのインスタンスで異なるコマンドが生成されました。機能した場合に発行された実際のコマンドを取得し、機能しなかった場合にそのコマンドを繰り返すと、機能するに違いありません。

コマンドが動作したマシンに移動して次のように入力すると、コマンドを見つけることができます。

echo g++ -o*.C *.cpp

これにより、シェルが生成したコマンドが表示されます。他のマシンでそのコマンドを試してみると、きっとうまくいくでしょう。

(また、あなたのコマンドは意味がありません。何を-o*.Cすべきだったのですか?あなたは意味しました-o something *.Cか?)

于 2012-05-02T02:19:00.700 に答える