我用VC++6.0的ATL工程写了个BHO的COM组件,我分别用Debug和ReleaseMinSize(我选的是MFC动态链接dll)两种方式编译了一次,生成了BHO.dll,问题出现了,当我在自己开发机器上怎么regsvr32.exe都能成功,可是当我在大众(客户)电脑上时,Debug编译的能正常regsvr32.exe注册,可是用ReleaseMinSize编译的BHO.dll时出错:
regsvr32.exe C:\WINDOWS\system32\BHO.dll  回车:
错误:LoadLibrary("BHO.dll")失败-内存分配访问无效";(有的机器还是别的样的提示,但大多是这样的提示,就是没注册成功)
我马上在想:我这个程序不大,Debug生成900K左右,ReleaseMinSize生成是174k左右,最重要的是我的程序中钱象中没有调用windows自带以外的插件或其它dll呀?而且我也放在system32下了,什么地方错了呢?急求哪位朋友指点

解决方案 »

  1.   

    对了好多机器是这样提示出错的:
    错误:LoadLibrary("BHO.dll")失败-由于应用程序配置不正确,应用程序未能启动。从新安装可能修复此问题"
      

  2.   

    你把bho.dll传上来,给大家测试一下,这样比较好查找问题~
      

  3.   

    缺少调用的库文件
    用Depends查看依赖库,将相应库放到跟你你的dll相同目录下
      

  4.   

    下面是我程序所有用到的头文件,大家看看如果这样的程序编译好后,.dll能拿到普通机器上运行我的BHO.dll么,我晕,我现在试了,BHO到别的机器注册到能注册上,而且IE里面也有我的BHO插件了,可希所有功能全没反应。我运,VC++是什么啊,只有开发机器能用啊.........................
    #include "ExDispID.h"
    #include <list>
    #include <string>
    #include <iostream>
    #include "SMailer/SMailer.h"
    #include "MUtils/WinSockHelper.h"
    #include <string>
    #include <vector>
    #include <fstream>
    #include <stdio.h>
    #include <string>
    #include <vector>
    #include <map>
    #include <exception>
    #include <winsock2.h>
    #include <atlbase.h>
    #include <atlcom.h>
    #include <exception>
    #include <string>
    #include <winsock2.h>
    #include <statreg.h>
    #include <statreg.cpp>
    #include <atlimpl.cpp>
      

  5.   

    我用Depends查看依赖库了,里面有这些,大家快帮看看。。
    Kernel32.dll
    user32.dll
    comdlg32.dll
    winspool.drv
    advapi32.dll
    shell32.dll
    shlwapi.dll
    ole32.dll
    oleaut32.dll
    ws2_32.dll
    这些.dllWINDOWS系统是不是自带的呀。我的程序想独立啊
      

  6.   

    我快疯了,我看了,所有机器里面都有我这个dll所依赖的dll啊,而且都注册成功了BHO,在IE的插件管理里面都有了,在我的机器就通运行效果,其它任何机器都不能运行效果
      

  7.   

    注册的时候 regsvr32 会加载你DLL里的所有全局变量并初始化,从错误来看你可能有些全局变量初始化错误了
      

  8.   

    改为 ReleaseUMinDependency 才可以.
      

  9.   

    BHO的COM组件,不能使用ReleaseMinSize.
    要 ReleaseUMinDependency .