- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++ .Net2003 SDKプログラムからMFCプログラムへの移行)
VC++ .Net2003 SDKプログラムからMFCプログラムへの移行
このQ&Aのポイント
- VC++ C初心者が、VC++ .Net2003 SDKプログラムからMFCプログラムへの移行に取り組んでいます。
- SDKで開発を進めていたが、MFCの方が開発効率が良さそうなので、必要な部分をMFCフォームへ移行を始めました。
- しかし、ビルドでエラーが発生し、先に進めない状況です。ライブラリ等の参照先が正しく設定されていない可能性があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>#include <atlstr.h> おそらく不要でしょう。 MFCでは、デフォルトでstdafx.hというプリコンパイル済みヘッダを使用しています。 このため、ウィザードで作成分を含む各ソースでは、 #include "stdafx.h" と、インクルードする必要があります。 個別のcppファイルでライブラリ等のヘッダをインクルードは基本的に行いません。ライブラリのヘッダを追加したい場合はstdafx.hに追記していきます。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.3
>error C2086: 'int GetUseFicFileName' : 再定義されました。 >error C2086: 'int GetUseFicFileName' : 再定義されました。 これって、どこのファイルでエラーが出てますか?abc.hですか?abc.cppですか?MFCのウィザードが作成したファイルですか?それともリンク時ですか? abc.hまでstdafx.hに追加してませんか?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.1
移行方法が書かれていないんですけど。 もちろんMFCのプロジェクトを作って、そこに自分で定義した関数がかかれたソースを追加していくといったイメージなんですよね? で、CString、abc.cppで使ってますか?
質問者
補足
すみません補足させて戴きます 他人が作ったMFCプロジェクトに自分が作った abc.cpp と abc.h を追加しました CStringは abc.cpp で使ってます abc.cppとabc.hの両方に #include <atlstr.h> を記載してます (根本的にあっているかどうか判ってないですが ビルドは出来ました)
お礼
#include "stdafx.h"をabc.cppの一番先頭でインクルードする事で対処出来ました #include <atlstr.h> #include <afxstr.h> でCStringを2回インクルードしてビルドエラーを起こしていた様です しばらくこんなケースで悩まされそうです 勉強になりました、taka_tatsuさん有難うございます
補足
>#include <atlstr.h> 上記のインクルード文をコメントにして 実行したところ、前回のエラーは回避できましたが CString 宣言子を理解してくれてないのか、以下のエラーが出力されてしまいます 〓エラー〓 error C2059: 構文エラー : ')' error C2086: 'int CString' : 再定義されました。 error C2086: 'int GetUseFicFileName' : 再定義されました。 error C2086: 'int GetUseFicFileName' : 再定義されました。 "GetUseFicFileName"はabc.cpp abc.h に宣言されている関数です 一応プロジェクトのプロパティを確認してみました 「構成プロパティ」→「C/C++」→「プリコンパイル済みヘッダー」を調べてみると以下の様に成っています プリコンパイル済みヘッダーの作成/使用 = "プリコンパイル済みヘッダー ファイルを使用する(/Yu)" ファイルを使用して PCH を作成/使用 ="StdAfx.h" プリコンパイル済みヘッダー ファイル ="$(IntDir)/$(TargetName).pch" このあたりに、ビルドがCStringを無視する起因があるのですかね? (移行する時から、このヘンでハマるとは思ってましたが、経験不足で 深みにハマったまま出れません・・・・、なにかピンと来たら助言戴けませんか?)