社区
Delphi
帖子详情
关于NTDLL.DLL出错的奇怪问题
needs
2009-08-16 10:35:50
DELPHI2007使用了FRAME,在IDE环境下运行正常,单独运行时就出现ntdll.dll的地址错误,不知有哪位大侠知道错误原因?
还有个情况,单独运行时出错后关闭,第二次运行就正常了
...全文
11650
19
打赏
收藏
关于NTDLL.DLL出错的奇怪问题
DELPHI2007使用了FRAME,在IDE环境下运行正常,单独运行时就出现ntdll.dll的地址错误,不知有哪位大侠知道错误原因? 还有个情况,单独运行时出错后关闭,第二次运行就正常了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WWYWT
2010-06-25
打赏
举报
回复
测试似乎和IE版本有关 IE6没有问题 IE8有问题
WWYWT
2010-06-25
打赏
举报
回复
我也遇到这个问题 代码和楼主基本一样的 如果解决了麻烦也通知我一下 我QQ1478706 万分感谢
浮生若梦_平淡为真
2010-03-23
打赏
举报
回复
我也是遇到这样的问题啊
wxsan
2009-08-21
打赏
举报
回复
友情帮顶!
otmac
2009-08-21
打赏
举报
回复
我也遇到这问题,不知道啥原因,关注。
needs
2009-08-20
打赏
举报
回复
现在的问题是直接读图片文件没问题,图片文件编译成资源后再读就要出错,不知是不是代码哪里有问题
needs
2009-08-20
打赏
举报
回复
我已经参考过这篇文章,试过显式调用_AddRef,把GPBitmap改回GPImage等,除此以外我看与他的例子没有本质区别了
gyk120
2009-08-20
打赏
举报
回复
或许你应该参考下这个??
http://blog.csdn.net/maozefa/archive/2007/07/12/1685930.aspx
needs
2009-08-20
打赏
举报
回复
FRAME是编译在主EXE的,读取RC文件也一样
needs
2009-08-20
打赏
举报
回复
现在可以确定是和读取图片的这段代码有关
procedure LoadImageFromRes(var AImage: TGPBitmap; const AResName, AResType: string);
var
lStream: TStream;
lStramAdapter: TStreamAdapter;
begin
AImage:= nil;
lStream := TResourceStream.Create(HInstance, AResName, PAnsiChar(AResType));
try
lStramAdapter:= TStreamAdapter.Create(lStream);
try
AImage:= TGPBitmap.Create(lStramAdapter); 《----使用这句时出错
//AImage:= TGPBitmap.Create('Down.png'); 〈---使用这句就不出错
finally
lStramAdapter:= nil;
end;
finally
lStream.Free;
end;
end;
如果使用lStramAdapter就会出现NTDLL。DLL的错误,直接读取文件就不出错
这是为什么?
wooden954
2009-08-20
打赏
举报
回复
非常同意4楼观点
gyk120
2009-08-20
打赏
举报
回复
FRAME编译到了DLL里面还是EXE里面?
读取资源DLL出错,你把资源DLL的资源提取出来做成rc文件调用会不会出错?
needs
2009-08-19
打赏
举报
回复
可以确定是在读取资源DLL中的图片并绘制到窗口界面时出错
出错以后系统需要自动重绘时不再出错
wintergoes
2009-08-18
打赏
举报
回复
全都加上日志输出
看看是哪抛出的异常
needs
2009-08-17
打赏
举报
回复
我是在WIN2003系统下,不确定是哪一句代码出问题,关键是调试时不会出错
而且运行一次出错后再运行就不再出错
可能与图片读取和绘制有关
也可能和COM有关
阿呆_
2009-08-17
打赏
举报
回复
你说的问题我遇到过很多次了。如果你程序是在Vista或者win7系统下,退出时报NTDLL.DLL读取非法内存。那么就可能是我遇到的原因(有意思的是开始我们的程序在Win7 64和Vista 32下会报错,改了别的东西重新编译后变成在Win7 32和Vista 64下出错了)。 我发觉原因可能是因为Vista和Win7中某些COM组件的实现和DELPHI的COM实现不兼容。而且问题一般出现在你delphi程序调用了Vista以上版本的新形式的Open/SaveDialog,不管你在Dialog中选确定还是取消,就会有很大机会在程序退出时报错,具体错误是在程序退出时卸载oleauto.dll时释放COM组件时访问了已经释放的内存而造成的,说明某个COM组件的引用计数已经乱了。
改正方法有两个,一是不使用Vista提供的Common Item Dialog组件而仍然使用XP的Common Dialog方式来建立Open/Save 对话框,即调用Open/SaveDialogBox.Execute前先设置Dialogs.UseLatestCommonDialogs:=False; 二是用VS写个调用Common Item Dialog实现Open/Save对话框的dll然后给delphi调用。
cnhxjtoa
2009-08-17
打赏
举报
回复
这个问题只有LZ自己才能解决,没有代码呢。。。。
gyk120
2009-08-16
打赏
举报
回复
NTDLL错误一般是和系统交互出现了问题,没有说是哪个函数吗?那样只能调试下断点看看
mathsfan
2009-08-16
打赏
举报
回复
我也经常碰到这样的情况,好象跟你写的代码有关系,有时我改过代码以后就不会出现ntdll.dll错误了。
祝你好运。
动态内存分配new发生访问异常
博客讲述一个早期开发的C++程序偶尔出现0xC0000005异常,定位到是
DLL
调用
NT
DLL
中HeapAlloc入口处
出错
。经分析怀疑与多线程有关,编写测试程序验证,发现单线程运行库在双核CPU有
问题
,修改为多线程库后正常,还提出单核CPU运行单线程库程序不
出错
的疑问。
利用未公开函数枚举进程及其关联的端口系列之(二)转
文章详细介绍了如何使用未公开API枚举系统中的进程及其关联的端口,包括对SOCKET的理解、
NT
DLL
.
dll
的API分析、Fport软件的原理解析以及提出的一个类似工具Gport的实现细节。
Win2K下关联进程/端口之代码初步分析
本文介绍了如何通过调用
NT
DLL
.
dll
中的未公开API获取进程与端口的关联信息,实现类似Fport的功能,同时探讨了Socket句柄的原理及其在Windows系统中的应用。
动态链接库中分配内存引起的
问题
-- windows已在XX.exe中触发一个断点
本文探讨了在动态链接库中分配的内存在主程序中释放时产生的
问题
,并详细解释了解决方案,即确保
DLL
分配的内存在同一
DLL
中释放,避免不同运行期库之间的内存管理冲突。
Win2K下关联进程/端口之代码初步分析(转)
本文介绍了一种在Windows 2000环境下关联进程与端口的方法,通过对Fport软件的逆向工程,利用
NT
DLL
.
dll
中的未公开API实现了类似功能。详细解释了如何使用
Nt
QuerySystemInformation获取系统句柄,并通过DuplicateHandle函数转换句柄。
Delphi
5,943
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章