2011-07-19 17 views
2

2005年に他の誰かによって書かれたVisual C++ソリューション(.dsp VC++ 7.1)をビルドする必要があります。私はVS2010トライアルでソリューションをコンパイルしようとしていますが、下記のとおり、私にいくつかのエラーを与える:Visual C++を使用しないでC++ Visual C++ 7.1ソリューションをコンパイルする

error C3867: 'CServerSocket::SelfDestruct': function call missing argument list; use '&CServerSocket::SelfDestruct' to create a pointer to member 
error C2039: 'iterator_category' : is not a member of 'CommandDispatchInserter' c:\program files\microsoft visual studio 10.0\vc\include\xutility 
error C2146: syntax error : missing ';' before identifier 'iterator_category' c:\program files\microsoft visual studio 10.0\vc\include\xutility 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 10.0\vc\include\xutility 
error C2602: 'std::iterator_traits<_Iter>::iterator_category' is not a member of a base class of 'std::iterator_traits<_Iter>' c:\program files\microsoft visual studio 10.0\vc\include\xutility 

VS2005から以降のエラーを引き起こしているさまざまなライブラリの異なる実装があるというのが私の調査からと思われる、私はコードでもある標準にかなり非対応だと思います要因。 VS2003のインスタンスをインストールするのに手間がかかっていましたが、VSの要件(これは私がやっていることについてはかなりわかりません)に合うようにコードを修正するのではなく、私は現在の状態をコンパイルする方法があるのだろうかと思っていました。私は窓のためのminGWを使用することを試みたが運がなかった。 MFCライブラリが気に入らないようでした。誰もが最も生産的なルートに関して何か提案をしていますか?事前

+0

これらのエラーが報告されたコードを送信すると役立ちます。 –

+0

エラーは2つしかありません。それらを修正してください。 –

答えて

1

最初の問題については、&を使用して明示的にメンバーへのポインタを取得してください。これをVS9または10でコンパイルする方法は他にありません。これは簡単に追加できる機械的なもので、C++の知識はほとんど必要ありません。

2番目の問題は、どこか 'typename'修飾子がないことです。これは難しいです。もしあなたがC++を知らないのであれば、ほんの少ししかできません。 &の問題を最初に修正し、コンパイラのログに記入し、より良い回答を得るためのコードを書いてください。

実際の質問については、これを新しいバージョンのVSでコンパイルする方法はありません。いくつかの「下位互換性」コンパイラ設定がありますが、これらの問題はそれによってカバーされません。また、MFCコードをVisual Studio以外のコンパイラでコンパイルすることもできないため、MingWルートは無駄な時間を費やすことはありません。

だから、あなたのオプションは次のとおりです。

  • バックのVisual Studio 2003簡単に移動します。
  • コードを修正してください。 C++の知識やこのサイトへの多くの旅行が必要です。それほど簡単ではありません。それ以来、変更は7.1(2003年)以来、より多くの大きながあるため

はところで、.DSPは、Visual Studio 7.1ではない、それは、そう、あなたも多くのねじ込みしている場合のVisual Studio 6.です。

+0

最終的にはVS 2003に戻っていました。少しの痛みはありましたが、それは仕事でした!ありがとう – Grub

3

おかげで最初のエラー(関数呼び出し欠落している引数リスト;「& CServerSocket :: SelfDestruct」を使用)規格に、より準拠するようにVS2003とVS2005の間、コンパイラの変化です。私が知る限り、ここでの唯一の解決策は、メッセージが示唆しているようにコードを修正することです。私たちは数年前にVSをアップグレードしたときにこれをいくつかのケースで経験しました。それを修正するのは難しいことではありません。

私はあなたがコードを何とか修正せずにVS2010の下でこれをコンパイルできるとは思わない。私はそれらを一つずつ修正し始めます。それは確かに他の4つのエラーがすべてリンクされているように思われます。あなたが何が間違っているのか把握すれば、修正するために多くの変更を必要としないかもしれません。それを引き起こすコードを投稿することは、私たちの残りの部分を助けるでしょう。

+0

はい、Visual C++ 6からのアップグレード後にコンパイルされないコードは、後のVisual C++コンパイラが1998年に進行中の作業であった適切な標準にますます適合しているため、珍しいことではありません。コンパイルエラーを修正すると、正常に実行されます。 –

0

MSDNのエラーコードを検索することにより、コンパイラエラーの根拠に関する詳細情報を得ることができます。 C4430は、明示的な戻り値の型を持たない関数が宣言されている場合に発生します。 Visual C++ 6はここでintを前提としていましたが、それ以降のバージョンはコンパイルに失敗します。

MSDNの詳細についてはhereを参照してください。その他のエラーコード検索(この場合は文字列C4430)も機能します。

このエラーは、Visual C++ 2005のために行われたコンパイラ準拠作業 の結果として生成することができます:すべての宣言は、明示的に タイプを指定する必要があります。 intはもはや想定されません。

関連する問題