我看到一个动态库:
               CMyClass:
                        {
                             virtual void WINAPI  Init()=0;
                             virtual void WINAPI  Start() =0 ;  
                        
                         }
 CMyOtherClass:public CMyClass
{
   void Init();    
   void Start() ;    
}
CMyOtherClass g_Class ;//用来导出
why???????????????????????????
这个动态库DllMain都没有,系统怎么处理得?!!!!!!!如果我直接写成
AFX_EXT_CLASS CMyClass{
                       void  Init();
                       void  Start();
  
                       };
这个有什么用啊?不能导出类只能导出函数和变量 ??????????????

解决方案 »

  1.   

    如果dll里不需要系统的一些通知消息,可以不必实现这个函数
      

  2.   

    如果你用的是MFC,MFC类库提供了DllMain。
      

  3.   

    不是说DLLMAIN 是动态库的入口么?
      

  4.   

    DllMain应该是必须的,而一些MFC的动态库你看不到DllMain,只不过是被MFC给隐藏和包装了。
      

  5.   

    你肯定用的是动态创建,dllmain()是扩展的mfc创建
      

  6.   

    一般在C或C++中(VC当然是C++的一种),DLL的模块入口点有个默认函数,是_DllMainCRTStartup(),它的原形与DllMain()一样,链接器在链接的时候就是以它作为模块的入口函数,那样它就可以进行一些模块全局变量等的初始化操作,当然用户也可对模块入口地址进行自行设定,不过不建议这么做!当链接器在链接时,它会自动查找当前DLL模块工程中的各个.obj文件,如果找到有DllMain()函数,这时就会在_DllMainCRTStartup()函数中调用用户的入口点函数,也就是DllMain()函数,如果找不到,否链接口自动调用自身的DllMain(),这个DllMain()函数中只有很少的一些代码,那就是在传递DLL_PROCESS_ATTACH通知中调用DisableThreadLibraryCalls()函数,以告诉系统以后有线程的创建或撤消时不必调用此DLL的入口点通知。
    所以说在DLL模块中没有DllMain()用户自定义的入口点模块是可以的。
      

  7.   

    不是,我想说的是,应用程序把动态库连接入内存,它得入口点是什么,总有个入口吧
    如果动态库没有入口,那么是怎么进入的呢?DentistryDoctor(牙科医生)  我那么支持你做斑竹,你一定要照顾兄弟
      

  8.   

    就是因爲是入口所以在某些時候不需要這些入口的時候,就不用dllmain比如我加載dll只是爲了調用其函數,且這些函數所涉及的變量不需要初始化,則無所謂有沒有dllmain