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

dll注册的有关问题

2013-10-15 
dll注册的问题.用VC++编写了一个OCX控件,这个控件调用了另外一个DLL ,这时候运行非常完美,没有出现问题.新

dll注册的问题.
用VC++编写了一个OCX控件,这个控件调用了另外一个DLL ,这时候运行非常完美,没有出现问题.

新的需求出现了 我在DLL 中添加了一个函数,然后OCX中调用该函数,连接没有出现问题,也是这个函数已经导出了.
编译最后出现该错误.
 Project : error PRJ0050: 未能注册输出。请确保您有修改注册表的相应权限

注释掉那个dll中的函数调用则成功,不出现错误.

有谁遇到过这个问题,实在太郁闷了...   
[解决办法]
http://blog.csdn.net/cnming/article/details/1808559
[解决办法]
还有另外一个帖子,也不知哪个适合你的问题
http://blog.csdn.net/liufei_learning/article/details/5047632
[解决办法]

引用:
Quote: 引用:

若是已放在同一目录下并且自己手动注册也失败的话,可以用depends打开ocx查看下是否连接dll有误,或者该新函数有依赖dll或者资源什么的,这些问题通常都是由dll连接或者依赖相关问题引起的,比较隐蔽难查


手动注册不能成功,但是我注册未添加那个函数的OCX,然后将那个添加了函数的OCX,替换掉注册成功的,函数功能可以调用成功,我用depend 查看过了那个dll导出正常,而且那个新的函数中没有依赖其他DLL,假如这样的话,那么替换后应该不能继续使用才对,这个问题太烦了.


导出符号呢,新函数与以前的是否一致?然后ocx 中include文件是否与 dll一致?调用的运行时是否一致?若是dll工程与ocx工程分开的话将两个移动到同一解决方案下,将所需include文件放到公共的include中去,然后一起编译试试。若还不行,试下ocx中动态调用其是否可以,然后在转回来。


我跟你说下我当初遇到这个问题时是什么原因:
我当初有一套库,a.dll是整个核心调用的dll,它依赖于b.dll,c.dll....等一大堆dll,然后我的一个ATL工程中调用a.dll出现了与你相同的问题,后来发现a.dll,b.dll等加载的运行时不一致,有的加载的debug的运行时,有的加载的release的运行时,debug的运行时里还加载的不一样的版本,于是我将这些所有的依赖dll在同一方式下编译之后就过了,所以还是连接的问题。
[解决办法]
Dll依赖用depends查看

热点排行