1>d:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]我的工程是基于ATL, 在创建的时候没有选中支持MFC编译的时候就会出现这个问题

解决方案 »

  1.   

    project->configuration propertires->usf of MFC->改成Use MFC in a shared DLL
      

  2.   

    改为动态链接MFC库后 会出现
    1>d:\program files\microsoft visual studio 8\vc\atlmfc\include\afxv_w32.h(16) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>
      

  3.   

    #include   <windows.h>有吗?
      

  4.   

    windows.h被包含了多次而引起了冲突
    把#include<afxmt.h>放到stdafx.h这个文件中
      

  5.   

    非MFC工程使用MFC库时最常见的问题就是windows.h重复包含错误,具体如下:fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>非MFC工程使用MFC库时,可参考以下步骤1、工程设置中,将MFC的使用由原来的“使用标准windows库”改为“在共享DLL中使用MFC”(VC71)如果是英文版,相关选项是:Microsoft Foundation Classes: Use MFC in a shared dll, no using MFC(VC6)NOTE:因为我用的是中文版的vc71,英文版的vc6.2、头文件包含不同的MFC类需包含的头文件是不一样的。常用的类,如Cstring, Cedit 等,包含afxwin.h就可以了如果不清楚包含什么头文件的话,可以同msdn进行查询,msdn中,对于MFC类的介绍中,都会给出相应的header file requirement.3、#include 语句一定要写在首行这一点很重要,通常出现前面讲到的windows.h重复包含错误,都是因为#include 语句没有写在首行。另外还要注意的是,如果#include语句是在一个头文件里,那么对应头文件的包含也要写在首行。示例如下:=============test.h文件的内容如下:#include <afxwin.h> //保证该语句在首行test.cpp的文件内容如下:#include “test.h” //同样也要保证该语句在首行=============ps: 这么做的具体原因我也不知道,我是在实际调试中琢磨出这个道理的。我自己在这个问题上花了很多冤枉时间,写下该篇,就是希望大家不要在这个问题上绊脚。(3)在进行连接之前要初始化OLE环境,初始化语句   ::CoInitialize(NULL); //初始化OLE/COM库环境 
      
      AfxOleInit();//初始化OLE/COM库环境(MFC自带的)    这两句话缺一不可,不然会有运行期错误    程序运行结束后记住::CoUninitialize();  //关闭OLE/COM库环境,释放资源link: http://blog.csdn.net/pzhuyy/archive/2007/05/16/1611488.aspx
      

  6.   

    我在这个ATL工程中用到了CDialog类
    然后我在工程属性中将Use MFC改为Use MFC in shared DLL
    然后在stdafx.h的#pragma once后加入
    #include <afxwin.h>
    但是会出现
    1>mfcs80ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in tryATL517.obj
    错误
    这是为什么
      

  7.   

    我在DLLMain中
    加入了
    ::CoInitialize(NULL);  
    AfxOleInit();
      

  8.   

    CDialog是MFC的类,不建议你在ATL的工程里使用MFC。你可以使用CDialogImpl<CXXX>派生出你自己的对话框类