winsock と mfcアプリケーションのコンパイルエラー – プログラミング – Home

winsock と mfcアプリケーシ...
 
通知
すべてクリア

winsock と mfcアプリケーションのコンパイルエラー


ftake2000
 ftake2000
(@ftake2000)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

mfc アプリケーションのソースで、以下のような順序で、ヘッダーファイルをinclude す
ると、コンパイル時に、エラーします。

$ cl hoge5.cpp /D _AFXDLL /MD
C:\PROGRA~1\MICROS~3\VC98\MFC\INCLUDE\afxv_w32.h(14) : fatal error C1189:
#error : WINDOWS.H already included
. MFC apps must not #include <windows.h>

winsock.h と、afxwin.hの順番を変えると、出ません。winsock.hのなかで、_WINDOWS_
が定義されているからだと思うのですが、なにか、正しい方法のようなものがあるのでし
ょうか?

#include <winsock.h>
#include <afxwin.h>
void main()
{}

環境は、
VC++6
Windows2000です。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

エラーメッセージに出ているとおり、
MFCでは<windows.h>をincludeしてはいけないということでしょう。


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

MFCでソケットプログラムを作成しますが、特に<winsock.h>はインクルードしていませんよ。

stdafx.hで次の記述があるので不要と思いますが

#include <afxsock.h> // MFC のソケット拡張機能


返信引用
ftake2000
 ftake2000
(@ftake2000)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

VC++の開発環境を,つかうと、afxsock.hをインクルードしています。このなかで、
afxwin.h、winsock.hの順番で,インクルードしています。
ただ、winsock2を使いたい場合、下のようなコードをコンパイルしても,同じコンパイルエラー
になります。
MFCアプリケーションでは,afxsockのほうを使わなくてはいけないということなのでしょうか?

#include <winsock2.h>
#include <afxsock.h>
#include <afxwin.h>
void main()
{}
~


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

回答ではありません
winsock.hとwinsock2.h どちらを使いたい質問なの?
また、そのヘッダーを利用する(使用する 関数)の決定はどのようにして行ったの?

構文エラーと言うのは目的にあった物を正しく記述していないためのものですから
キチンと仕様を定めてから作ってますか?


返信引用
ftake2000
 ftake2000
(@ftake2000)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

>winsock.hとwinsock2.h どちらを使いたい質問なの?
>また、そのヘッダーを利用する(使用する 関数)の決定はどのようにして行ったの?
作りたいのは、winsock の関数を使うMFCのアプリケーションです。

>構文エラーと言うのは目的にあった物を正しく記述していないためのものですから
>キチンと仕様を定めてから作ってますか?
私の質問もそのことなのですが、winsock.h、afxwin.hという順番でインクルードする場
合のみコンパイルがエラーになります。
ただ、これは、winsock.h(winsock2.h でも同じ) が、windows.hをインクルードしてい
るからです。

もし、MFCアプリケーションをインプリスする場合、windows.hを、インクルードしてはい
けないのなら、winsock.hは、インクルードできなくなってしまうので、winsock APIは、
つかえないということになってしまいます。

ただ、afxsock.hも、中で、afxwin.h,winsock.hという順番で、インクルードしていま
す。

winsock.hをインクルードするときには、いつも、この順番ですればいいということなの
でしょうか? 

でも、ヘッダーファイルが順番に依存しているのは、なんとなく気持ちが悪いと思います
けど。。(ライブラリをリンクするときみたい)


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

INCLUDEしているヘッダの中身をみて、お考えになればよいのではないですか?
順序変えたければ中身をカスマイズすれば済むのではないのですか


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました