BC++からVC++への移行方法とは?問題はある?

このQ&Aのポイント
  • BC++ ver5.0を使っていたが、最近はVC++を使用し始めた。ソフトを移植したいが、問題はないだろうか?
  • 移行方法は以下の通り。1. OWLでのクラスに関連するヘッダーファイルのinclude部分を削除。2. VC++のクラスウィザードで作成したヘッダーファイルの長い番号の部分を削除。3. MFCのクラスに関連するヘッダーファイルのincludeは自動的に行われる。4. 自分で定義したクラスに関連するヘッダーファイルはincludeする。
  • 上記の手順を実施すれば、移行に問題はないだろう。質問者は指導を求めている。
回答を見る
  • ベストアンサー

BC++から VC++ へ

BC++ ver5.0 をしばらく使っていました。 最近、 VC++ を使い始めました。  ソフトを移植したいのです。 方法は次のようにするつもりですが、 問題はないでしょうか。 1.OWL でのクラスを使用するために記入していた   ヘッダーファイルのinclude 部分を削除 2.VC++のクラスウイザードで作ったヘッダーファイルの最初にある   長い番号の部分を削除。 3.MFCのクラスに関するヘッダーファイルの   include は自分では記入しないですませる。   (include したつもり。) 4.自分で定義したクラスについてのヘッダーファイルは   include する。  以上で、問題はないでしょうか。 よろしくご指導ください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> ... > CFeditView > の定義を書いたヘッダファイルが > 見つからなかったので stdafx.h を覗いてみれば... #include <afxwin.h> // MFC のコアおよび... #include <afxext.h> // MFC の拡張部分 #include <afxdisp.h> // MFC のオートメーション... なんてのが見つかるはず、この中のどれかで宣言されてるんです。

uyama33
質問者

お礼

 納得しました。 ありがとうございました。

その他の回答 (2)

回答No.2

> 動きそうですが、クラス定義のヘッダーファイル > が無くても動くのが不思議なのです。 #include <xxx.h> していながら xxx.h が なかったらコンパイルエラーになります。 コンパイルできたのなら、どこかに必ずあるはずです。 > MFC のウイザードの書き込む番号の > 意味が分からないのです。 わからなくてかまいません。 #if !defined(XXXX) #define YYYY XXXX と YYYY が'同じ'でさえあればいい。

uyama33
質問者

お礼

 ありがとうございます。  たとえば、 class B : public class CEeditView { } としたときの、クラスBをクラスウイザード でつくると、  そのときできる、ヘッダーファイルのなかには CFeditView の定義を書いたヘッダファイルが 見つからなかったので  最初の 変な番号が ヘッダーファイルのinclude の代わりかなと思ったのです。  どこかに、 #include .... があるのでね。  そのうちに、 見つかるとい言うことで、気楽に考えることに します。  ありがとうございました。

回答No.1

> 最近、VC++を使い始めました。 でしたら、やってみてはいかがでしょう。

uyama33
質問者

お礼

ありがとうございます。 今やっています。 動きそうですが、クラス定義のヘッダーファイル が無くても動くのが不思議なのです。  それから、 MFC のウイザードの書き込む番号の 意味が分からないのです。

関連するQ&A

  • VC++6.0からVC++.NET2005へ移植

    VC++6.0で作成したプログラムをVC++.NET2005に移植しました。 ビルドを行うと『fatal error LNK1104:ファイル'mfc42.lib'を開くことができません。』のエラーが出てしまいます。 ソリューションのプロパティを見てもどこで「mfc42.lib」の参照を定義しているのか分かりません。 どこで「mfc42.lib」の参照を定義しているのか教えてください。また、対策を教えてください。

  • VC++2010の「#include <」

    VC++ で、他人の作ったソースコードをビルドして実行してみています。 (WinPcapのデベロッパ向けのライブラリを使った、サンプルプログラムです。) VC++自体、あまり理解が深くないのですが、 「#include <」まで書くと、「ヘッダファイル名が表示される」プロジェクトと、「そうではない」プロジェクトがあります。 「そうではない」方のプロジェクトだと、ビルド時にincludeするライブラリが足りないとか、そんな感じのエラーが表示されます。 ぱっと見の違いは、「ヘッダファイル名が表示される」プロジェクトの場合は、 ソリューションエクスプローラに、「外部依存関係」というフォルダのショートカットがあり、ライブラリがどっさりあります。 「そうではない」プロジェクトについても、「#include <」で、ヘッダファイルを表示してくれるようにしたいのですが、どの様にすればよいのでしょうか?★ プロジェクトのプロパティの、 C++>プリプロセッサ>プリプロセッサの定義 リンカー>入力>追加の依存ファイル はどちらのソースも同じにしたのですが…。

  • VC++6.0でのインクルード

    VC++初心者です。 環境はVC++ on win2kなのですが、 ヘッダファイルを別のファイルにしてコンパイルしたいのですが、できません。 test.cppの中身 #include <iostream> #include <string> #include <stdio> ・・・* #include "kneko.h" using namespace std; int main() { kneko x("tama"); x.naku(); } kneko.hの中身 #ifndef __kneko_h #define __kneko_h class kneko { string name; public: kneko(){}; kneko(string n){ name=n; } void setname(string n){ name=n; } void naku() const { cout <<"My name is"<<"name"<<"."endl; } }; #endif この2つを同じディレクトリに入れて、 ビルド→コンパイルすると、*のところで 「インクルードファイルがオープンできません。」 というエラーが出ます。 ためしに*の行を削除すると、エラーが8つぐらい出てきます。 どうやらヘッダファイルを読み込めていないようです。 インクルードの書式が間違っているのでしょうか?

  • VC2010

    VC2010を使用して、xmlファイルの読み込みを行いたいと考えています。 条件としては、MFCや.NETを使わないです。 何か良いライブラリやクラスがあれば教えてください。 また、参考サイトがあればお願いいたします。

  • error C2065: error C2057: が出てしまいます。

    VC++6.0 ダイアログベースです。 自動で作られたダイアログのヘッダファイルを 自作で作ったクラスのヘッダファイルでインクルードした所 下記のようなエラーが出てしまいました。    error C2065: 'IDD_MY_DIALOG' : 定義されていない識別子です。 error C2057: 定数式が必要です。    まだ自作で作ったクラスはクラスになる前のインクルードのみ書かれた 状態ですが・・・。      //自作する予定のヘッダファイル(まだインクルードのみ) #pragma once #include "DLGTEST.h"//自動で作られたダイアログ //自作のファイル(まだインクルードのみ) #include "stdafx.h" #include "gakusei.h"    自動で作られたファイルをインクルードすることは出来ないのでしょうか? もしインクルードできるならどのようにしたらインクルードできるのでしょうか? オンラインマニュアルで調べたのですが、良くわかりませんでした。 /**オンラインマニュアルより、解決方法**/   stdafx.h からの VC_EXTRALEAN 行を定義する 1 つソリューションが#を削除できます。 これは、通信とレジストリとほかのエリアの MFC によってプロジェクトで直接が使用されない Win32 API を保持します。 含められない代替は、#のセットでの行が「#が VC_EXTRALEAN を定義するのを」置き換えるために、 上記で一覧された行を定義しこと、そしてハードウェアがそれその#が定義する削除によって選択的に登録されこと、です。 たとえば 通信 API が呼び出される場合、#がすべて上記で stdafx.h に「#が NOCOMM を定義すると、」行の以外、 一覧された行を定義するのを持つ可能性があります。

  • VC++のインクルード方法について

    VC++2008にて他フォルダファイルをincludeしたいと思いましたが ディレクトリが異なる為に、 4>d:\vss\xlmap\lib\fmfc\fmDbfFile.h(6) : fatal error C1083: include ファイルを開けません。'shapefil.h': No such file or directory と、エラーが出てしまい、コンパイルができません。 どのようにヘッダーファイルをincludeすればよいのでしょうか? お力添えして頂けたら幸いです。 宜しくお願いします。

  • VC++2010で作ったアプリケーション

    最近VC++でアプリケーションを作りました。 VC++のMFCを使ってです。 簡単なカレンダーなのですが、・・・ そのカレンダーのプログラムをコンパイルするとexeファイルができ、 そのexeファイルをクリックすると、確かに起動し、アプリケーションを使うことができるのですが、 問題はここからで、 このファイル、自分のパソコン上では動くのですが、 ほかの人のパソコン上だと「コンポーネントが見つかりません、mfc100,dllが見つかりません」 とか言う警告が出てしまうのです。 なぜ他のパソコンでは起動できないのですか? もしかして、作ったアプリケーションは、exeファイルだけあってもだめなのでしょうか? よろしく願います。

  • VC6.0からVC7.0への移植

    VisualStudioでプログラムしています。 このたび、VC6.0で作ったプログラムをVC7.0(.NET?)に移植しようとしたところ、 「MSVCIRTD.LIBがありません」とエラーが出たので、 Microsoft Visual Studio\VC98\LibにあったMSVCIRTD.LIBをコピーしてコンパイルを通したのですが、 今度はvc60.pdbが見つからないというwarningが出てしまいます。 warningなので無視して実行しようとすると、 強制終了してしまいます。 VC6.0で作ったプログラムのファイル構成と比べると、 確かにvc70.pdbはあるのですが、vc60.pdbはありません。 ご存知の方がいましたら、問題の解決方法をご教授くださいよろしくお願いします。

  • VC++2010を覚えたい(極めたいではない)

     ExcelVBAで実験データを整理していますが、Excelのみでしか使えない等の問題からVC++2010をそこそこ使えるようになりたいのです(極めようとまでは思っていません)。先日もここで質問させていただいたのですが、メッセージボックスを出したりファイル操作をしようとすると、知識不足のためコードが正しく書けずエラーばかり出て格闘しています(VBAだと、msgbox"こう書けば表示される" の一行で済むことをやるのに、かなり格闘します)。  そこで、これら基本動作を完全に使いこなせるようにするために勉強をしたいのですが、何について勉強すればいいのかよくわかりません。どんな本を買って何を勉強すべきでしょうか?いい本があったら教えてください。特にできるようになりたいことを下に書きます。 1 #include <stdio.h>とかのインクルードファイルを宣言する位置。 2 intやdouble等の変数宣言も、たまにエラーでできないことがある。   関数内では変数宣言の方法が違うのかな?   String^ でどうして^がついたりつかなかったりするかわからない。   これでエラーとかよく出ます。^は大嫌い>< 3 メッセージボックスとかの表示。messageboxの前や後ろにshowとか::とかどうして必要か   わからない。メッセージボックスに確認する変数の数値を出すのも難しい。 4 データファイルをいろいろ操作したい。データファイルはテキストデータのみ 5 グラフもVC++で書けるとうれしい。必要があるときだけでいい。 forやif等の制御構造、配列、ポインタ等はもう知っています。 これらができるようなるには、「クラス」とかを勉強するとわかるのでしょうか? クラスが何のことだかもわかりませんが。

  • [VC][ATL] 'ImageList_Read'が定義されていない!というエラーになるのは?

    VC++.NET 2002+WTL7.0で開発をしています。 アプリケーションウイザードでMFCアプリケーションを作成して、クラスの追加から「ATLのサポート」を追加します。そして、stdafx.hに #include "atlapp.h" #include "atlctrls.h" を記入すると 'ImageList_Read'が定義されていない というエラーになってしまいます。 とりあえずatlctrls.h内のエラー発生箇所をコメントアウトすることで対応しているのですが...どのようにしたらエラーがでないようにできるのでしょうか?よろしくお願いします。

専門家に質問してみよう