0

だから私はg ++でexecを作成しようとしています。私のコマンドは次のとおりです。

g++ -o project21  main.cpp tools.hpp file.hpp FileInfo.cpp file.cp tools.cpp 

エラーが発生する

ld: warning: ignoring file tools.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: ignoring file file.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)

ここでの動作は、XCode でコンパイルでき、exec を問題なく使用できるのは奇妙なことです。問題が発生しているのはシェルだけです。

4

2 に答える 2

1

hpp ファイルをコンパイルする必要はありません。それらを .cpp ファイルに含めます。

プロジェクトにhppを含めても、明示的に要求しない限り、Xcodeはそれらをコンパイルしません(私のMacは動作していますが、プロジェクト(左側のツリーのルート)をクリックしたことを思い出したら、ターゲットをクリックします)タブのビルドフェーズを確認すると、コンパイルするファイルのリストがあります)。

セグメンテーション違反については、ソース ファイルが欠落している場合 (つまり、実際には .cpp ファイルにあるはずのコードを .hpp ファイルに追加した場合)、セグメンテーション違反ではなくリンク エラーが発生します。セグメンテーション違反には他の理由があり、GDB で実行してデバッグします (デバッグできるように -g でコンパイルします)。以下にいくつかの可能性を示します。

  • 別のプラットフォーム用にビルドしている場合、問題はプラットフォーム固有のコードである可能性があります。
  • コンパイラの非互換性: LLVM で Xcode を使用していると仮定すると、LLVM では動作するが gcc では動作が異なるコードがいくつかある可能性があります。非常に可能性は低いですが (これらのコンパイラでの私の経験では、互換性が非常に高いと言えます)、それでも可能性はあります。
于 2012-06-27T04:15:10.633 に答える
0

*.gchコマンドを試す前に、Xcode ビルドによって作成された可能性のあるファイルをすべて削除してみてくださいg++

ただし、一般的には、最初にヘッダー ファイルをプリコンパイルせずに動作させるようにし、必要に応じてプリコンパイル済みヘッダーの最適化を追加します (つまり、.hppファイルを明示的にコンパイラに渡さないでください)。他のすべてが機能し、本当に必要な場合のみ)。

于 2012-06-27T03:42:34.527 に答える