首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC Acticex控件发布时的奇怪有关问题!晕倒死

2012-01-26 
MFC Acticex控件发布时的奇怪问题!晕倒死作了一个可以在web上用的控件,该控件新建一个线程并建立显示一个F

MFC Acticex控件发布时的奇怪问题!晕倒死
作了一个可以在web上用的控件,该控件新建一个线程并建立显示一个Frame框架。
本机调试运行,正常。
本机release发布,并运行,正常。

打包成cab,发布,本机unregisterdll,然后访问网页,安装运行正常。
http://www.datasonar.com/test1.htm
可是其他机器在运行过程中报错!
我怀疑是mfc42.dll的版本问题,我的机器版本是7,0,3790,1830,别的机器好像是6.0开头的,但如果是mfc42的问题,为什么控件可以初始化,并执行部分功能?比如页面设置?如果是mfc版本问题,我该如何打包?是不是将本机的mfc42,msvcrt等等加进去,那么inf文件该怎么写?原先我是用:
file-win32-x86=VALUE=http://activex.microsoft.com/controls/vc/mfc42.cab

另一个可能是代码本身的问题,但本机运行release版本并没有问题(unregisterdll之后,然后访问网页),如果是代码问题,最有可能发生在什么方面??

[解决办法]
也写过一个ActiveX控件,小说一下,希望对楼主有帮助:

应该要把mfc42,msvcrt等等打包到cab的,这个不仅仅是版本问题,有的客户端根本不存在mfc42等dll,而你的控件又需要它们,所以一定要打包到cab,客户端会下载到本地...

至于写入inf文件,跟把ocx写进inf文件一样吧,去google以下“inf文件”或者“打包cab inf ”,
片断可参考:
[version]
signature= "$CHINA$ "
AdvancedINF=2.0

[Add.Code]
WebOffice.ocx=WebOffice.ocx
mfc70.dll=mfc70.dll
msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll

[mfc70.dll]
file-win32-x86=thiscab
FileVersion=7,0,9466,0
DestDir=11
RegisterServer=yes

[msvcrt.dll]
file-win32-x86=thiscab
FileVersion=6,1,9844,0
DestDir=11
RegisterServer=yes

[olepro32.dll]
file-win32-x86=thiscab
FileVersion=5,0,4522,0
DestDir=11
RegisterServer=yes

[WebOffice.ocx]
file-win32-x86=thiscab
clsid={05430EC0-69CA-437A-B1F9-4B78B8647BEA}
FileVersion=1,0,0,1
RegisterServer=yes

在客户端下载控件时,cab下载时会自动跟客户端的各个dll/ocx...的版本相比较,以决定是否要下载最新的dll/ocx...
[解决办法]
支持楼上的
[解决办法]
应该是缺少某库的原因。
你可以用depends工具查看一下你的DLL和那些文件关联,然后把关联的一些必须的文件打包到你的CAB中。
还有,如果你的DLL是VC6写的话用minidependsrelease模式编译。这样会使关联的一些库最少。
最后一点就是你的cab和里面的dll需要进行数字签名(是先对单个的dll签名,然后做成cab后再对cab签名一次)
检查完上面的一些注意点后楼主再试试。应该能找到问题点了。
[解决办法]
有可能是mfc42.dll的问题,你试试把mfc42.dll替换一下试试
[解决办法]
我学习!

热点排行