我调用一个别人的动态库,如果静态调用没有问题,但是如果LoadLibrary,然后GetProcAddress调用和取某个函数地址都失败,别的DLL成功,GetLastError后返回一个操作系统错误的模糊报告,我不知道怎么办?
我觉得和DLL有关系,但是问题出在哪儿?

解决方案 »

  1.   

    LoadLibrary返回0,和定义没有关系,有没有高手?
      

  2.   

    先用vc自带的depends工具看看输出函数的函数名.
      

  3.   

    LoadLibrary()中的路径对不对把dll copy到当前工作目录.
      

  4.   

    除了楼上的可能性外
    如果该 DllMain 返回值失败,系统也会自动释放该 dll.
    所以首先要确保 dll 能够被别的程序 装载。
    ----------------------------------------------------------------
    长恨此身非我有/何时忘却营营/夜阑风静觳纹平/小舟从此逝/江海寄余生
      

  5.   

    我知道什么原因了,比较头疼。
    已存在:dll1,dll2(system32目录),dll1静态调用dll2
    我实现的:dll1动态静态调用dll2,dll2(用户demo动态静态调用),dll2动态调用已存在的dll1和dll2
    我的和已存在的必须同名问题:由于同名,出现调用混合甚至调用循环。
    结论:无法避免,除非已存在的dll1动态调用dll2;或者不同名(排除,不允许)试问通过其它预编译条件如命名空间等可否解决。
    有无知道类似问题的同志?
    请关心我的人不必再考虑楼上几种恢复!谢谢!