0

このエラーコードについてはあまり発見されていないため、先にこの質問をします。解決するのはかなり簡単ですが、適切なエラーメッセージが表示されないため、診断に多くの時間がかかりました.

どうしたの?

  • プロジェクトにテンプレート関数を追加しました
  • CL.exeプロジェクトがコンパイルされると、問題があり、閉じる必要があるというメッセージがポップアップ表示されます
  • Visual Studioでコンパイルを中止するerror MSB6006: "CL.exe" exited with code 1

問題は、テンプレート関数の構文エラーでした。誰がそれを推測できたでしょうか。

ただし、これらは報告されていないため、見つけるのは困難でした。どの機能に欠陥があるかを判断する方法については、私の回答を参照してください。

テンプレート化された関数はヘッダーに含まれる .cpp にありましたが、それらを完全にヘッダーで定義しても違いはありませんでした。

// foo.h

template <typename T>
void foo();

...

#include "foo.cpp"



// foo.cpp

template <typename T>
void foo() 
{
...
}
4

3 に答える 3

2

最初に、テンプレート化された関数を含むすべての .cpp ファイルを個別にコンパイルする必要があります (プロジェクト エクスプローラーで 1 つを選択し、右クリックして「コンパイル」します)。

私にとって最初のヒントは、それらのいくつかはコンパイルされ、他の人にとってはcl.exeクラッシュしたということでした。

次のステップは、bogus.cpp関数を 1 つだけ含むファイルを作成することでした。ここでは、作成したすべてのテンプレート化された関数に呼び出しを 1 つずつ追加しました。1 つ追加した後: 再コンパイルします。これは、欠陥のあるものに到達するまではうまくいきましたが、今ではbogus.cppクラッシュしcl.exeました。ジャックポット。

最後の仕事は構文エラーを修正することでした。これはエラー メッセージが表示されずに面倒ですが、これが完了bogus.cppすると、再びコンパイルされます。すべてがカバーされるまで、関数呼び出しの追加に戻ります。

私が助けてくれることを願っています。

于 2015-11-04T18:53:48.637 に答える