1

f2c コンバーター ( f2c ) を使用して一部のレガシー Fortran コードを C に変換し、Windows 7 (64 ビット) で Cmake を使用して Visual Studio 10 ソリューションを作成しました。また、C++ プログラム (メイン関数を含む test.cpp) を f2c ライブラリ (システム上で nmake を使用して構築) にリンクする必要もありました。私は CMake と Visual Studio を幅広く使用してきましたが、プログラムをコンパイルした後、Visual Studio に同梱されているヘッダー ファイルに関連する不可解なエラーが多数表示されます。

2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : '('
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : '-'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : ')'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2027: use of undefined type '_Ty'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2226: syntax error : unexpected type 'std::complex<_Other>'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2988: unrecognizable template declaration/definition
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2059: syntax error : '-'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2059: syntax error : ')'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(263): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(263): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(264): error C2143: syntax error : missing ';' before '{'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(264): error C2447: '{' : missing function header (old-style formal list?)

Visual Studio ソリューション ファイルを最初から作成してもうまくいかないようで、同じエラーが引き続き発生します。これらのエラーの問題を追跡するにはどうすればよいですか? 明らかに、私がインクルードまたは作成したファイルに何か問題がありますが、それは何でしょうか? エラーはすぐにコードの特定のセクションを指していないため、デバッグは困難です。

f2c.h ヘッダー ファイル ( f2c.h ) へのリンクは次のとおりです。私は追加しました

#ifdef __cplusplus
extern "C" {
#endif

上へと

#ifdef __cplusplus
 }
#endi

私のtest.cppはC++プログラムなので、このヘッダーファイルの一番下に。

4

1 に答える 1

2

問題はf2c.h、 などの数学関数用のものを含む、多くのマクロを定義しているようabsです。これらのマクロは、同じ識別子が標準ヘッダーで検出された場合に問題を引き起こします。

このため、常にf2c.hファイルの最後のヘッダー (または#undef他のファイルを含める前に競合するマクロ) として含めることをお勧めします。

于 2012-05-21T04:50:07.293 に答える