こんにちは、honiyonです。

 VC++で、MFCを用いてNT用のサービスプログラムを作成しています。

 ATL COM AppWizardで、サービスアプリケーションを選択したので、atlbase.hが StdAfx.hに宣言されています。
 CString型を使いたいので、該当cppファイルに、afxwin.hをincludeしました。
何故か StdAfx.hより先に afxwin.hをincludeすると、CStringの定義が正しくされないようなので、後にもってきています。

#include "StdAfx.h"
#include <AfxWin.h">

 この状態だと、atlbase.h, AfxWin.h双方で windows.hをincludeしているようで、AfxWin.hが参照する afxv_w32.hで、以下のようなエラーが発生します。

fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

 この問題を回避するために、atlbase.hやAfxWin.hを改造して回避出来そうですが、それは今後別のものを作る時の支障になりそうなので避けたいです。
 その他の方法で回避する事は出来ないでしょうか?

 宜しくお願いします(..

A 回答 (1件)

「windows.h」を変更して良いなら、「windows.h」の先頭と最後に下記を追加してみてください。



(先頭)
#ifndef _windows_h_include
#define _windows_h_include

(最後)
#endif /* _windows_h_include */

これで二重includeは回避できます。(_windows_h_include の部分は一例です。分かりやすいラベルにしてください。)
    • good
    • 0
この回答へのお礼

こんにちは、honiyonです。

 ご回答ありがとうございます(^^)
 極力、元からある(?)ヘッダ等に変更は加えたくないと思います。

 まだ windows.hは覗いていなかったのですが、その宣言は無かったんですね(^^;
 その変更は加えておいた方が今後とも便利そうです。

 今回は、atlbase.h中の、#include <windows.h>を取り除いたファイルを別途用意し、 #include "atlbase_org.h"; のような感じで StdAfx.hの atlbase.hの宣言を置き換える事で対応してみました。
 現在の所、問題なく動作しています。

 ありがとうございました(..

お礼日時:2002/02/21 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

今、見られている記事はコレ!

  • 基本情報技術者試験の言語ってどうやって選ぶ?

    SEを目指す場合、基本情報技術者試験を経て実務に就いた人も多いのではないでしょうか。教えて!gooにはSEを目指している質問者からこんな質問が寄せられました。 「基本情報技術者試験のC言語とJavaの違い?」 将...

  • 結婚してるのに好きな人ができました…

    「不倫」のきっかけは、自分は大丈夫と思っていても、ある日突然襲ってくるかもしれない……。 「教えて!goo」に、「結婚して一年ぐらい」という女性より、「結婚してるのに好きな人が出来たらどうしたらいい?」と...

  • せきらら女子会:第127話「女性同士のショッピング」

    恋愛、結婚、お金、夜の営み...いろんなことに対して、赤裸々にトークする女の子達のお話。考え方の違う4人が、今日も居酒屋に集まります。

  • ゲーム業界ダンナ観察日記:第114話「頑張りすぎた結果」

    ダンナ様のねむねむ。奥様のとぽすけ。ごく普通のふたりは、ごく普通の結婚をし、だらだらと夫婦生活を送っていました。でもただひとつ違っていたのは、ダンナ様はゲーム会社勤務だったのです。

  • 光と音を奏でる未来の靴、登場

    皆さんは「教えて!goo」に登場したちょっと変わった靴の記事を覚えているだろか? 例えば「ヒールがマニキュア?ヒールがミニパンプス??遊び心あふれる『maris』の靴」だったり、マリー・アントワネットが処刑台に...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ