使用第三方的动态库,在一个类中实现对其一些接口的调用,主程序中还没有用到这个类时程序就报错。原因是动态库访问了某些文件,而这些文件不存在。为什么会这样?

解决方案 »

  1.   

    yxz_lp() :第三方的动态库在载入进程地址空间时,它本身也需要载入其它文件(如其它的动态库),而你的计算机上又没有。动态库顾名思义是动态链接的,就是程序中需要时才去主动调用它,为什么会先载入进程地址空间哪?请指教。如果载入,是在哪一步载入的?jasonshark(没暑假了...)   可惜没有说明文档。
      

  2.   

    你应该是静态加载的该库,所以,程序启动的时候就要加载该DLL,加载该DLL时,该DLL是知道的,它做了一些操作,可这些操作失败了,就是这样
      

  3.   

    厄,还以为你搞定了...估计是在它的入口点DllMain里访问了什么文件...没文档的话这些都只能靠猜..
    关于dll的加载,如果你使用静态加载的话默认是在进程启动时加载所需dll, 相当于系统帮你调用LoadLibrary和FreeLibrary
      

  4.   

    JessC和jasonshark讲的都很有道理,但是如果我想先运行自己的程序,只是在需要用到dll中的方法时才去加载相应的dll,我该怎么办哪?
      

  5.   

    你可以参考一下delay load选项
    http://www.microsoft.com/msj/1298/hood/hood1298.aspx