LoadLibrary加载Dll失败,GetLastError=998,但是如果隐式加载这个DLL却能够正常运行,
谁能说说可能的原因。

解决方案 »

  1.   

    998L ERROR_NOACCESS 内存分配访问无效..
      

  2.   

    是不是显式 LoadLibrary,没有FreeLibrary?
      

  3.   

    可能加载的时机不对,它依赖的一些条件还未满足。
    你分析一下该DLL内部的初始化条件。
      

  4.   

    你看看dll里时候有静态TLS,修改为动态的就可以了
      

  5.   

    请保持你的DLL和调用程序有相同的的use of MFC 和 code Generation设置值。
    另外,如果你是MFC程序,尽量设置use of MFC的值为Use MFC in a Shared DLL
      

  6.   

    在DllMain上设置断点,如果能执行到断点,再调试看执行到哪里出错。
      

  7.   

    但是没有DLL,有个全局对象。
      

  8.   

    我在loadlibrary设置了断点,但是无法进入DLL中去,在DLL中设置断点但是又不成功.
      

  9.   

    要调试DLL项目,把EXE作为调试的命令行。
    你的DLL是哪种项目?MFC规则DLL?在App类的构造函数和InitInstance函数上设置断点。
      

  10.   

    DLL中的函数加载失败多数是由于定义的输出函数名有问题,我遇到过这样的问题。
    你查一下DLL的源码,采用__stdcall输出
    你可以编写.def文件,定义输出函数。
    将DLL编译链接,生成DLL文件,双击打开,查看其中的输出函数名。如果设置不对,也许你会见到函数名前加下划线,按标准C输出的函数名,是不应该带有下划线的。
    当你加载动态库时,注意指定的函数名,即LoadLibrary的第二个参数,按标准C输出的函数可以引用函数名,否则是一个内部的名称,带有@指定序号的一个怪名字。
    在DLL中设置断点,单步跟踪,看看在那里出错,输出了什么函数名。
    个人的一点小建议,祝你好运。
      

  11.   

    加载时要获取文件所在目录的路径, 在把DLL文件名给加进去! 就可以@