1.怎么样知道一个dll文件是否使用了mfc还是普通的win32dll,如果引入库使用了MSVCRT呢?2.win32dll和MFC扩展dll是不是一定要有dllmain(),而regular mfc dll不需要自己写,系统会自己生成一个?3.如果dll项目的名称是abc,并假设dllmain在abc.cpp里,要在项目里加入其他三个文件b.c、c.c、d.c,那么是不是要把所有这些源文件的头文件include到abc.cpp里?如果是用MFC(dll)向导生成的regular mfc dll那么又该怎么做?应该把头文件放到哪个.cpp里呢?谢谢

解决方案 »

  1.   

    1.使用VS自带的工具Depends就可以知道了,命名规则不同的
    2.系统不会生成的,DllMain函数不是必须的
    3.只要工程中被声明_dllspec(export)的都会被导出
     也可以用DEF文件来导出
      

  2.   

    我想知道的是:
    2.dllmain是一定有的吧,虽然可能向导没有自动生成。不然入口在哪?
    3.我想问的不是导出函数的方法,我是想知道要是不把其他的函数的头文件放进dllmain所在的那个cpp里的话编译或者功能使用上会不会有问题?
      

  3.   

    还有:
    1.使用depends看到的有:MSVCRT.DLL,KERNERL32.DLL,NTDLL.DLL,根据这个是否可以判断有没有用到MFC呢?
      

  4.   

    woship(Jet'aime哈侬) :DLL是动态链接库
    和LIB是可以一样的
    所以可以没有dllmain
      

  5.   

    整理一下上面的答案:1.MFC的dll一般要导入MFC42D.DLL等( oyljerry(【勇敢的心】→ ㊣X-Man㊣) )2.系统不会生成的,DllMain函数不是必须的( qrlvls(空 气)  )3.你还不懂.c和.h可以不成对出现...以及.h的作用,我劝你自己找本书好好看看( 这是我说的 )
      

  6.   

    .h和.c的关系我当然清楚,我只是对dll不是很了解,不过dll和lib还是有很大区别的,如果使用dll生成时选择生成的lib的话一定要有dll的支持才行。anyway,谢谢大家。
      

  7.   

    静态LIB是不需要dll的
    dll工程中的lib只是为应用程序的链接提供信息而已
      

  8.   

    另外,MFC的dll在静态链接时也是不需要MFC的相应dll的