char filename[]="E:\MySource\DevelopEdition\BinaryData\BinaryData.dll";

解决方案 »

  1.   

    我也使用filename[]这样的方式写过,没用.
      

  2.   

    老兄,LoadLibrary加载dll时是只取文件名忽略路径的,它按照自己的路径搜索规则进行加载:当前路径,系统路径,环境变量中的路径,总之是同一个文件名的dll在同一个进程中只能被加载一次
      

  3.   

    应该是DLL依赖(Dependent)的错误,两种方法找出问题:1.你倒该Dll路径下Check一下Dependence,看看他依赖于那些库,有可能你的DLL路径下的有相同文件名的Depenence,然后系统调用该DLL的时候使用到这个库。2.在执行态进行调试,打开Output window,看看执行态在C:\和在长路径下的DLL装载有什么不同
      

  4.   

    call GetLastError immediately after calling LoadLibrary to get extended error information.
    LoadLibrary may fail in many cases. We can not determined what happened from your description.
      

  5.   

    我在WIN98操作系统下运行不出错,你是不是把指定的目录写错了。也可以这样。你把BinaryData.dll放到C:\WINDWO\SYSTEM目录下!然后用Loadlibaray(BinaryData.dll)
      

  6.   

    你能否在DLL内调试,我有些怀疑BinaryData.DLL自己的初始化代码。
    不过你还是先检查一下GetLastError()的返回值,看看是否有帮助。
      

  7.   

    用下面的代码,你就知道是什么原因啦。char buf[256];
    handle = LoadLibrary(filename);
    if (handle==0) {
        FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
             NULL, GetLastError(), 0, buf, sizeof(
             buf), 0);
        MessageBox(0, buf, filename, MB_OK|MB_ERROR);
    }
      

  8.   

    用SetCurrentDerectory()不知道行不行。
      

  9.   

    FormatMessage和SetCurrentDirectory开始调的时候就用到了。前者返回装入无效模块,后者则没有用处。