为什么ATL写的DLL为什么无法在其他机器上注册——很急

kofot2002 2010-03-05 10:43:43
各位高手们,我用vs2008编写了一个ATL,编译、生成都通过了,因为vs2008生成后能自动注册,所以把dll文件放入本机web工程后,能够通过javascript调用,但是我在别的机器上打开我的页面,有提示“ActiveX控件”,然后我点击“安装”,就是无法下载和注册,这是为什么?
我在网上也找到个dll文件,那个就能注册,我把2个dll文件对比,只是网上下载的那个dll在属性里多了一行"OleselfRegister",我编写的atl居然没有这行,但是我在工程里看到version里有这行,只是没有值而已,我不知道为什么我编写的atl不能像其他dll那样自动下载、安装、注册呢?

其他相关信息:1.如果我用regsvr32 -u去掉工程编译时注册的信息,然后打开页面,也会提示ActiveX安装,安装是没有问题的;2.如果其他机器装了vs,也能修改internet的安全选项中的“下载未签名ActiveX”后成功安装;3.没有装vs的机器,就是把Internet的安全设置调成最低,什么都开启,也是点击安装无任何反应的,我不知道哪里出差了,网上的dll不调到最低都能下载注册。

我的web工程是tomcat6.0,但这应该没什么关系吧。

希望大家帮我一把,先谢谢了。
...全文
574 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kofot2002 2010-03-05
  • 打赏
  • 举报
回复
非常感谢大家,问题解决了。
就像jameshooo说的那样。
感谢bobod告诉我如何调试dll,感谢kevinmartin指出了问题所在,在csdn发帖回复的效率真是高哇!
Eleven 2010-03-05
  • 打赏
  • 举报
回复
引用 6 楼 bobob 的回复:
把dll复制到不能下载注册的机器,然后用Depends.exe看看缺少什么dll?
或者,在目标机器安装2008的可重新分发包试试

Depends工具查看用到哪些dll
jameshooo 2010-03-05
  • 打赏
  • 举报
回复
项目属性 - 配置属性 - C++ - 代码生成,运行时库选择“多线程(/MT)”
kofot2002 2010-03-05
  • 打赏
  • 举报
回复
引用 6 楼 bobob 的回复:
把dll复制到不能下载注册的机器,然后用Depends.exe看看缺少什么dll?
或者,在目标机器安装2008的可重新分发包试试

你好,depends我其实第一次听到这名儿,不好意思,我按你说的做了,下面是打开后的提示错误:
错误: 至少有一个需要的隐性或转发依赖函数没找到。
错误: 在 "f:\06\ATLUPLOAD.DLL" 的并行配置信息包含错误。由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。 (14001).
警告: 由于在延时加载依赖模块中丢失导入函数,至少有一个模块具有不能解析的导入。

这个错误是由MSVCR90.DLL引起的,说缺少MSVCR90.DLL。
bobob 2010-03-05
  • 打赏
  • 举报
回复
把dll复制到不能下载注册的机器,然后用Depends.exe看看缺少什么dll?
或者,在目标机器安装2008的可重新分发包试试
kofot2002 2010-03-05
  • 打赏
  • 举报
回复
还有就是我试过做 数字签名,也是没有效果;
别人的dll从属性看,也没加签名一样可以下载、注册,所以我想这个和签名没多大关系吧,只是打包成cab方便根据版本号自动下载更新吧。
kofot2002 2010-03-05
  • 打赏
  • 举报
回复
我修改成 静态链接库了,编译后,别人的机器还是无法下载、注册。
1楼的朋友,我发布的是dll,并没有生成ocx文件的,有其他工具查看么?
2楼朋友,我是建立一个atl项目,添加一个atl简单对象,选择Release编译的,本机测试、页面调用均没问题,就是其他机器无法像下载其他控件那样下载我写的dll
mycool2001 2010-03-05
  • 打赏
  • 举报
回复
那是因为你的DLL需要运行库的支持,改为静态链接库就可以了!
  • 打赏
  • 举报
回复
你怎么发布dll的?
kevinmartin 2010-03-05
  • 打赏
  • 举报
回复
这应该是典型的在其他机器上注册ocx不成功的情况。

找个Depends.exe在目标机器上打开该ocx,查看该ocx有没有问题。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧