比如是这样loadlibrary("a.dll"),执行一次大概要3~5秒,FreeLibrary()时候也是这样。a.dll文件并不大只有100K多点。其他的有个很类似的b.dll,大小接口都差不多,可load时候就根本感觉不到延时。哪位高手给分析一下大概是什么原因???

解决方案 »

  1.   

    也许没有编译好,重新编译一下dll,试一下。
      

  2.   

    a.dll的DllMain函数里一定执行什么复杂的操作了
      

  3.   

    str = str + "\\bin\\datamanage.dll";
    CFileFind finder;
    if(finder.FindFile(str))
    {
         m_hManageModule = ::LoadLibrary(str);-------这句要3~5秒钟
    }
    怎么回事啊,奇怪!我重编疫过了,还是一样
      

  4.   

    DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
    {
    // Remove this if you use lpReserved
    UNREFERENCED_PARAMETER(lpReserved); if (dwReason == DLL_PROCESS_ATTACH)
    {
    TRACE0("NIDATABASE.DLL Initializing!\n");

    // Extension DLL one-time initialization
    if (!AfxInitExtensionModule(NIDatabaseDLL, hInstance))
    return 0; // Insert this DLL into the resource chain
    // NOTE: If this Extension DLL is being implicitly linked to by
    //  an MFC Regular DLL (such as an ActiveX Control)
    //  instead of an MFC application, then you will want to
    //  remove this line from DllMain and put it in a separate
    //  function exported from this Extension DLL.  The Regular DLL
    //  that uses this Extension DLL should then explicitly call that
    //  function to initialize this Extension DLL.  Otherwise,
    //  the CDynLinkLibrary object will not be attached to the
    //  Regular DLL's resource chain, and serious problems will
    //  result. new CDynLinkLibrary(NIDatabaseDLL);
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
    TRACE0("NIDATABASE.DLL Terminating!\n");
    // Terminate the library before destructors are called
    AfxTermExtensionModule(NIDatabaseDLL);
    }
    return 1;   // ok
    }
     没有哦,标准的
      

  5.   

    既然可以看代码,就调试跟一下,在DLLmain和loadlibrary处都设个断点,就知道哪里慢了
      

  6.   

    实在不能跟,就在适当的地方弹几个提示性的MessageBox,和跟踪的效果一样。
      

  7.   

    如果还是不行
    你去换台电脑编译一下,试一下!
    有时就是邪门,和电脑有关!(我碰到过,VC++6.0正版en,sp6)
      

  8.   

    哦~这个a.dll里面还引用了一个很大的DLL,大概有几M大。是在Project Setting下面设置的引用*.Lib。是因为这个原因吗?
    还有问题,如果在Project Setting下面设置的引用*.Lib的话,那么相应的*.DLL就会在运行时全部导入吗?(不是根据Lib里的接口在去DLL中找实现???)