我想在一个WIN32程序里使用CFileDialog应该怎么办呢??
我这样写
#include <windows.h>
#include <windowsx.h>
#include <afxdlgs.h>但是会有一个fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>错误,变成
#include <afxwin.h>
#include <afxdlgs.h>
又会有
nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in DllEntry.obj
nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in DllEntry.obj; second definition ignored
的错误
我改怎么办啊,高手救啊 ~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    先把obj文件删了 Rebuild All试试
      

  2.   

    不行啊,那位能解释一下
    #ifndef STRICT
    #define STRICT
    #endif
    的用处呢?
      

  3.   

    把#include <windows.h>删掉
    用#include <afxwin.h>代替试一下
      

  4.   

    为了使用CFileDialog的话根本不用包括windows.h
    #include <afxdlgs.h>
      

  5.   

    不行啊,因为下面还有一个Max.h
    这样定义的:
    #ifndef STRICT
    #define STRICT
    #endif// System includes
    #include <strbasic.h>
    #include <windows.h>
    #include <windowsx.h>
    #include <ctl3d.h>
    #include <commctrl.h>#include "udmIA64.h"
    // WIN64 Cleanup: Shuler
    // only contains datatypes to complete the Unified Data Model
    // Remove this once MSVC70 is out.// Some standard library includes
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <time.h>// Defines which version of MAX to build
    #include "buildver.h"// Defines basic MAX types
    #include "maxtypes.h"
    #include "trig.h"// Support libraries
    #include "utillib.h"
    #include "geomlib.h"
    #include "gfxlib.h"
    #include "meshlib.h"
    #include "patchlib.h"
    #include "mnmath.h"// Core include files
    #include "coreexp.h"
    #include "winutil.h"
    #include "custcont.h"
    #include "mouseman.h"
    #include "plugin.h"
    #include "units.h"
    #include "stack.h"   
    #include "interval.h"
    #include "hold.h"
    #include "channels.h"
    #include "SvCore.h"
    #include "animtbl.h"
    #include "ref.h"
    #include "inode.h"
    #include "control.h"
    #include "object.h"
    #include "objmode.h"
    #include "soundobj.h"
    #include "iparamb.h"
    #include "triobj.h"
    #include "patchobj.h"
    #include "polyobj.h"
    #include "cmdmode.h"
    #include "appio.h"
    #include "lockid.h"
    #include "excllist.h"// interfaces into MAX executable
    #include "maxapi.h"
    #include "ioapi.h"
    #include "impapi.h"
    #include "impexp.h"
    #include "iColorMan.h"
    里面已经定义了windows.h
    我改成#include <afxwin.h>就会有
    nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in DllEntry.obj
    nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in DllEntry.obj; second definition ignored
      

  6.   

    你的程序不允许使用MFC,你可以通过::GetOpenFileName函数来打开文件对话框
      

  7.   

    [问题九]:让控制台应用程序支持MFC类库 [解答]
    可以在控制台应用程序中include 来引入MFC库,但是控制台应用程序缺省是单线程的,MFC是多线程的,为解决该矛盾,在Project Setting->C/C++ 选项,选择Code Generation,在Use Run-Time Library 下拉框中选择Debug Multithread。<br>
      

  8.   

    上面虽然是控制台程序的做法,但道理是一样的,你按一般的MFC程序引用的库加进来。