以下是我的一个调用过程,nnotes。dll是一个C语言的库,有7m,放在运行程序的目录下结果加载总是失败,可是换了MFC的DLL却能加载成功,我对DLL不熟悉,望高手指教。
         HANDLE sample;  
         sample=LoadLibrary("nnotes.dll");
if (sample==NULL)
         { 
  AfxMessageBox("failure");
 }
else
{
               。。  
}

解决方案 »

  1.   

    假设你的工程叫 ProjectName, 在VC环境中启动程序时, 程序的当前目录是 ProjectName, 而不是 ProjectName\Debug希望这点线索对你有点帮助
      

  2.   

    不行,我试过了,问题是有的DLL可以成功加载
      

  3.   

    丢到c:\windows\system32目录里去,看看能否加载.
      

  4.   

    试过,我用REGSVR32注册,根本就不认这个链接库
      

  5.   

    那就是 nnotes.dll 这个dll的问题了.
      

  6.   

    我也这么想,可是这个链接库
    是大名鼎鼎的LOTUS NOTES自带的,它的系统运行就调用这个库,我很奇怪,难道它们的调用方法和我们的VC不一样?(这个库就是用C语言写的)
      

  7.   

    这和能否使用RegSvr32没有关系,如果要使用Regsev32的话,Dll必须export那四个著名函数.显然lotus是不会照做.丢进system32区,在LoadLibrary失败后,GetLastError(),看看出了什么错.
      

  8.   

    nnotes.dll是一个C语言的库 -- > 会不会是16位版本和32位版本不兼容阿
      

  9.   

    会不是挂羊头卖狗肉的假dll,你把这个dll拆了看看
      

  10.   

    是不是这个dll跟其它的dll一起使用?就是这个dll调用了其它的dll
      

  11.   

    我用GetLastError()返回数值126,这意味什么
      

  12.   

    路径不对,在path中没有找到这个库
    这个库本身是没有问题的,我用过他访问DOMINO数据库,可以使用的
      

  13.   

    126还是路径问题。我也这么想,可是这个链接库
    是大名鼎鼎的LOTUS NOTES自带的,它的系统运行就调用这个库,我很奇怪,难道它们的调用方法和我们的VC不一样?(这个库就是用C语言写的)----
    是不是要把LOTUS安装一下才行?
      

  14.   

    奇怪了,丢进system32区中还会有126? 126是未能在指定路径上找到这个DLL.两个问题:
    1. 126是十进制数吧?不是16进制的吧?
    2. 你是什么系统?
      

  15.   

    126是十进制数吧
    我用的是W2000SERVER
      

  16.   

    咱几乎是无话可说了,你那个DLL有7M,咱信箱总共才6M,其中还有些杂七杂八不愿删的东东,不然就可以让你发过来,咱也来看看这倒底是什么主儿.一句话,帮不了你了,兄弟珍重.
      

  17.   

    LoadLibrary 装载不了的 DLL, 肯定就是不符合 PE 格式的可执行体. 还用这么废劲弄干嘛?
    你以为 Lotus 就Load 了它吗?