社区
进程/线程/DLL
帖子详情
请教高手DLL HELL 问题怎么解决?急!高手帮忙!在线等!
fairykengqiangmeigui
2009-09-15 05:23:06
我编了一个DLL,在应用程序中使用没有问题,可我又想添加一些功能了,只能更改dll的.h文件,可是改了之后应用程序就不能用了,报错。上网查说是Dll hell。可只说的怎么避免,没有说,出现了怎么解决,请教高手。
我把改后的DLL clean、rebuild一下然后把.h重新加到应用程序里,又把应用程序clean、rebuild一下,不知道这种方法能不能解决,我试了一下,问题好像还是存在,不知道是哪儿的问题?
...全文
113
14
打赏
收藏
请教高手DLL HELL 问题怎么解决?急!高手帮忙!在线等!
我编了一个DLL,在应用程序中使用没有问题,可我又想添加一些功能了,只能更改dll的.h文件,可是改了之后应用程序就不能用了,报错。上网查说是Dll hell。可只说的怎么避免,没有说,出现了怎么解决,请教高手。 我把改后的DLL clean、rebuild一下然后把.h重新加到应用程序里,又把应用程序clean、rebuild一下,不知道这种方法能不能解决,我试了一下,问题好像还是存在,不知道是哪儿的问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fairykengqiangmeigui
2009-09-16
打赏
举报
回复
各位大侠再请教一个问题:
我编了一个父类在head.dll,两个子类分别在child1.dll和child2.dll,我在父类head。dll中定义一个虚函数 virtual int GetBlclick();并实现
int GetBlclick()
{
return 0;
}
在子类child1.dll中重载了这个函数,让其返回一个整形变量。
int CSwitchO1::GetBlclick()
{
return m_blclick;
}
可在.exe中调用时并没有返回我想要的变量值,怎么回事儿呢?是不是返回值不能是int型,那应该是什么类型?返回BSTR是没有问题的。
曾经的董胖
2009-09-16
打赏
举报
回复
[Quote=引用 8 楼 fairykengqiangmeigui 的回复:]
没错,我的确增减了head。dll的成员变量和方法,这是必须的,可我已经clean,rebuild了一下,不就相当于另分配空间了吗?这样还不行吗?有没有什么解决办法?head。dll的成员变量和方法真的真的不能更改吗?我已经更改了,有什么办法让它恢复吗?
[/Quote]
肯定不能增减。C++的类成员属性和方法是靠相对位移寻址的,你改了位置,意味着没有重新编译过的子类开始张冠李戴了。
对应的方法,要么你让其打回原形,通过其他办法添加你想要加的处理。要么重新编译子类。没有什么其他办法。
fairykengqiangmeigui
2009-09-16
打赏
举报
回复
[Quote=引用 7 楼 randyqiu 的回复:]
修改头文件后,相应的函数功能有没有进行修改呢
[/Quote]
功能当然更改啦
fairykengqiangmeigui
2009-09-16
打赏
举报
回复
[Quote=引用 6 楼 ytandwy 的回复:]
首先要明确head.dll中可以修改,但必须满足下列条件:
不能增减任何成员变量或方法
在child1.dll和child2.dll中用到的任何一个成员方法,都不能有接口参数上的修改,也不能有先后次序上的调整。
在child1.dll和child2.dll中用到的任何一个成员变量,都不能有数据类型上的变更,也不能有先后次序上的调整。
在满足上述条件的时候,一般child1.dll和child2.dll不用重新编译可以继续使用。
[/Quote]
没错,我的确增减了head。dll的成员变量和方法,这是必须的,可我已经clean,rebuild了一下,不就相当于另分配空间了吗?这样还不行吗?有没有什么解决办法?head。dll的成员变量和方法真的真的不能更改吗?我已经更改了,有什么办法让它恢复吗?
WuXinyang
2009-09-16
打赏
举报
回复
全部重新编译一下试试 .
fairykengqiangmeigui
2009-09-16
打赏
举报
回复
[Quote=引用 11 楼 olino 的回复:]
这肯定要重新编译你的那两个child动态库的。没别的办法,一般项目方在同一个解决方案下,设置编译依赖,保险些
[/Quote]
什么意思啊,怎么设置编译依赖?望大虾给详细讲讲,多谢
oLINo
2009-09-16
打赏
举报
回复
这肯定要重新编译你的那两个child动态库的。没别的办法,一般项目方在同一个解决方案下,设置编译依赖,保险些
Randyqiu
2009-09-15
打赏
举报
回复
修改头文件后,相应的函数功能有没有进行修改呢
曾经的董胖
2009-09-15
打赏
举报
回复
首先要明确head.dll中可以修改,但必须满足下列条件:
不能增减任何成员变量或方法
在child1.dll和child2.dll中用到的任何一个成员方法,都不能有接口参数上的修改,也不能有先后次序上的调整。
在child1.dll和child2.dll中用到的任何一个成员变量,都不能有数据类型上的变更,也不能有先后次序上的调整。
在满足上述条件的时候,一般child1.dll和child2.dll不用重新编译可以继续使用。
fairykengqiangmeigui
2009-09-15
打赏
举报
回复
各位高手,重申一下我的问题,可能没说明白:
我编了一个父类在head.dll,两个子类分别在child1.dll和child2.dll,由于需要我现在把head.h改了,可执行文件.exe里要用到上面的三个dll,我只把可执行文件里的head.h变了并重新编译,child1和child2.dll都没有变,这样难道不行吗?child1和child2.dll并没有用到head.h中改动的部分啊
mengde007
2009-09-15
打赏
举报
回复
内存结构要兼容;
MoXiaoRab
2009-09-15
打赏
举报
回复
贴代码
oyster2008
2009-09-15
打赏
举报
回复
如果DLL提供的函数接口发生变化,必须重新编译连接应用程序
fairykengqiangmeigui
2009-09-15
打赏
举报
回复
自己顶一个
解决
api-ms-win-crt-runtime-l1-1-0.
dll
丢失
问题
绿色版 工具下载
提示api-ms-win-crt-runtime-l1-1-0.
dll
丢失,安装这个小玩意就可以
解决
了
【疑难杂症】AiO Runtimes 微软常用运行库合集工具一键式安装全部 Windows 系统必备常用运行库合集,
解决
各种.
dll
文件缺失
问题
你是否有遇到过在安装完成一个xxxxxx.
dll
文件后,又提示另一个xxxxxx.
dll
文件缺失的情况?!! 坑爹呢!!!有木有............ 这时候你就需要一个神器,专治各种.
dll
文件缺失的情况,这个神器就是:AiO ...
电脑中缺少
dll
文件怎么
解决
?电脑
dll
文件要怎么打开?
使用电脑比较多的用户们平时肯定会...在电脑系统文件中也处于非常重要的地位,不过大家肯定也遇到过
dll
文件缺失这种情况,那么电脑中缺少
dll
文件怎么
解决
?电脑
dll
文件要怎么打开?下面小编就为大家来详细介绍一下。
电脑提示mfc140.
dll
丢失怎么
解决
?分享几个
解决
mfc140.
dll
丢失的方法
电脑提示mfc140.
dll
丢失怎么
解决
?分享几个
解决
mfc140.
dll
丢失的方法
DLL
Hell
(
DLL
地狱)浅谈
DLL
Hell
(
DLL
地狱)浅谈
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章