VC 6.0 下 建立一个win32 Dynamic-link Library,然后在这个DLL里加了个类CRSend,类里面想用CCriticalSection来对变量进行互斥访问,CCriticalSection需要#include "afxmt.h" ,可是我加了以后报错。比较郁闷。
错误情况1:afxmt.h加在stdafx.h里面,stdafx.h里有一个#include <windows.h>,我加在它前面。报了一个Link错误:_DllMain@12 already defined in RSendPack.obj(去掉windows.h情况一样)错误情况2:把afxmt.h加在RSend.cpp里,报错:fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h> Error executing cl.exe.网上的解决方案看了下:一是去掉预编译头stdafx.h,无效。二是在setting里using MFC in dll,无效。然后其他==就不说了。
总结一下,报第二个错,感觉还可以理解。但是第一个错误就不太清楚了。而且我建了一个控制台程序,完全没问题。请各位帮小弟想想。多谢了

解决方案 »

  1.   

    如果你的DLL需要MFC支持,只需#include <afxwin.h>即可,不要直接#include <windows.h>;另外MFC提供了内置的入口点函数,所以你的DLL无需再提供DllMain;
    如果你的DLL本身没有MFC支持,就不要随意使用MFC的类了,直接用InitializeCriticalSection/DeleteCriticalSection/EnterCriticalSection/LeaveCriticalSection等等API。
      

  2.   

    好的,     summertulip2用户头像
        summertulip2
        (summertulip2)
        等 级:
    #5楼 得分:0回复于:2012-06-13 16:59:02
    回复才能看答案?