都是ATL.DLL惹的祸
用VC的ATL做COM组件,确实很爽(个人观点)。可有一个问题不知大家注意到了没:你做的COM组件在有的机子上注册不上,做了个COM嵌在网页中,用浏览器在有的机子上就是下载安装不上。问题就在ATL.DLL上,它本身也是个COM,如用户的机子上没有已注册的ATL.DLL,那方才说的问题就出现了。WIN 2000,WIN ME操作系统上已有此dll,可9X,NT 上确省可没有,装了VC,NETMEETING 3之类的会有,但不能指望用户机子上装了这些东东吧?特别是用于网页的ocx,你要提醒用户先在自己的机子上找找有没有ATL.DLL,如没有,则如何如何...?!那就做个INF文件,加上你的OCX与ATL.DLL打成一个CAB。哪网景浏览器呢?我在网景公司的网上得知‘Esker ActiveX Plug-in’可使网景浏览器支持ACTIVEX 控件,如今最新是4.1板,我们一直在用着,还算行吧。可它不支持CAB!
气人:(。以前我用BCB做控件,没遇过ATL.DLL问题。因为有一次做的ASP组件在在9X,NT下均没问题,正好客户的SERVER用的是2000,结果在2000上没注册上。用VC做了一个是可以的,再加上其他一些原因吧,现在就用VC了,可没想到又遇上ATL.DLL问题,唉,怎么办?小弟技术,经验都差,不知为什么用BCB做的就不需要ATL.DLL,它的下面用的也是ATL呀!ATL.DLL有静态联编版本?我不知道,谁知道?先谢谢了。
或则在网页上也将加上版本号,CLSID的ATL.DLL嵌进去,用户有就算了,无则下。是个办法,不过,谁有微软签过名的ATL.DLL?我可不能用自己的证书给它(ATL.DLL)签名,微软找我麻烦咋办?看来也不行。
怎么办?
1.找个支持CAB的网景浏览器插件?我没找到,谁有?
2.静态联编ATL.DLL?谁有此库?
3.有微软签名的控件来解决?谁有?
我现在的方法是,让用户先下载个程序执行,将ATL.DLL拷在%system%下,然后regsvr32 ATL.DLL,可也太...不好了吧?
如何解决?谢谢各位了先!!!