- ベストアンサー
VC++6.0のプロジェクトをVC++2005Expressで動かしたいがエラーが出まくってしまいます。
VC++6.0のプロジェクトをVC++2005Expressで動かしたいのですが エラーが出まくってしまいます。 VC++6.0では正常にコンパイル終了するものがexpressだと、 ・・・string.h(135) : warning C4003: マクロ '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX' に指定された実引数の数が少なすぎます。 とか、 ・・・string.h(135) : error C2065: '_string' : 定義されていない識別子です。 とか、 ・・・string.h(135) : error C2275: '_locale_t' : この型は演算子として使用できません とかです。string.hなど、触ったこともないのですが、 express用に編集が必要なのでしょうか? ちなみに PlatformSDK などはインストールして、include,exectable,library ディレクトリなどのパスも通しています。 何か良い方法を教えてください。お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私も同様でした。 次のように対処しました。 1.警告気にしないことにする。(警告数は966件) 2.エラーは修正する。 3.ヘッダーファイルがないと言われたときは ***.h を *** に変える エラー修正は ネームスペースが原因のものがほそんどでしたので ofstream ofs を使っていた場合は その前に using namespace std; を書き加える。 設定で プロジェクト プロパティー 文字セット のところは、 マルチバイト文字セットを使用する にしています。 以上、エラーは無視します!!
その他の回答 (3)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★文字列関連は全面的に見直した方がいいかも。 ・私は『Microsoft Visual Studio.NET 2003 C/C++』を使っていますが、『2005』は 文字列関連の関数の引数などが大幅に変わったようです。 ・初期値では Unicode に設定されていると聞いた事があります。 プロパティなどで設定を変更したり、<string.h> の文字列操作関数の全面的な 見直しを行いましょう。 ・文字列定数は Unicode 文字も扱えるように TEXT() マクロを利用して定義するように 心がけて下さい。そうしておけば、プロパティなどで簡単に Unicode 版とシフトJIS版 のアプリケーションを開発できます。→『TEXT("あいうえお")』と使うだけです。 ・下の『参考URL』にちょっとした記事が書いてあります。→参考にして下さい。 ・以上。おわり。→地道に .Net 2005 用に移植した方が無難な気がいます。
お礼
回答ありがとうございます。 そもそもプログラミングは専門外なもので、 6.0の既存のプロジェクトをそのままコンパイル通そうと したことが、確かに間違いです。 機会を作ってじっくり見直しが必要ですね。
- jacta
- ベストアンサー率26% (845/3158)
全くの推測でしかありませんが、予約済み識別子をマクロとして定義してしまったということはありませんか? 一度、前処理だけを通してみて、エラーが出た箇所を再確認してみることをお勧めします。
お礼
回答ありがとうございます。 マクロ定義のようなことはないつもりなのですが・・・。 もう一度見直してみます。
- MrBan
- ベストアンサー率53% (331/615)
__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX でGoogle英語検索すると情報が幾つか見つかるようです。 参考URL以外にもヒットしますので、探してみてください。 # <string.h>はC言語のヘッダであり、対応するC++のヘッダは<cstring>だし、 # またC++には<string>というヘッダもあったりする。 # このあたり、VC6はnamespaceとか怪しかったので(標準にあわない部分多数)、 # 2005になるなら、いろいろ見直した方がいいのかも知れない。 VC6はこいつのnamespaceもガタガタです。
お礼
回答ありがとうございます。 参考にさせていただきます。
お礼
回答ありがとうございます。 結局私も#4さんのアドバイスのように行き着きました。 今後新たにソリューションを作るときには勉強しなおしですが 今はとりあえずこれで進めようと思っています。