loadlibrary _ExceptInit memcpy access in invalid menory

mimong_lin 2008-06-27 01:03:03
我在一个循环中,对从一个目录下用获取到的DLL文件,进行LoadLibrary, GetProcAddress, FreeLibrary,三个操作.但是对于有的DLL文件,在LoadLibrary的时候,CodeGuard 提示 access in invalid menory.CodeGuard日志如下:

Error 00193. 0x100400 (Thread 0x0908):
Access in invalid memory: Attempt to access 156 byte(s) at 0x0209BB8C.
memcpy(0x00154E48, 0x0209BB8C, 0x9C [156])

Call Tree:
0x020863A2(=CashOperSquadDatesRpt.dll:0x01:1153A2)
0x01F716F1(=CashOperSquadDatesRpt.dll:0x01:0006F1)
0x7C93CBAB(=ntdll.dll:0x01:01BBAB)
0x7C936178(=ntdll.dll:0x01:015178)
0x7C9362DA(=ntdll.dll:0x01:0152DA)
0x7C801BB9(=kernel32.dll:0x01:000BB9)

------------------------------------------
编译已经是使用Full Debug了,但记录到的信息就是这么多.

请教这是为什么?是不是我的DLL文件有问题?

但如果将这个出问题的DLL文件,单独放在目录下或者是和其它1 ~ 4 个一起的话,又是没提示的.

如下是我的书写代码:

AnsiString fullFileName = Format("%s\\%s", ARRAYOFCONST((m_reportDirectory, reportFileName)));
char fileName[MAX_PATH];
memset(fileName, 0, MAX_PATH);
strcpy(fileName, fullFileName.c_str());
dllIns = ::LoadLibrary(fileName);

...全文
159 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
killking06 2011-04-11
  • 打赏
  • 举报
回复
我是来学习的!
mimong_lin 2008-06-30
  • 打赏
  • 举报
回复
问题没出现了.不是代码的问题.
我把c++ builder 6卸载了重新装,重编译,不行;重建项目文件,把其它文件添加进来,再编译,就OK了.

折腾了一个星期,就这样解决法,无语!
jacknes009 2008-06-28
  • 打赏
  • 举报
回复
看看你的编译成DLL文件的那段代码。。。
mimong_lin 2008-06-28
  • 打赏
  • 举报
回复
楼上和1楼的说法是一样.只是,我不理解你说的"调试下DLL"是什么意思,应该单个文件的话,是没问题的,DLL中的导出函数调用也是OK的.就是在多个文件循环加载卸载的时候,出的这个文件.

请问,怎么确定这个DLL是不是有问题?
jxw1987628 2008-06-27
  • 打赏
  • 举报
回复
你的那个dll有木有问题的?我觉得你可以调试下dll
i_love_pc 2008-06-27
  • 打赏
  • 举报
回复
不见季老大好多年。
mimong_lin 2008-06-27
  • 打赏
  • 举报
回复
路径是没错的,这个Code Guard记录的虽然是访问了无效的内存,但是最后是可以加载DLL中,我用的也是长路径的.
mimong_lin 2008-06-27
  • 打赏
  • 举报
回复
不好意思,把3楼的意思看错了.
loveshell 2008-06-27
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20040608/04/3072223.html

看看是不是路径有问题
cppowner 2008-06-27
  • 打赏
  • 举报
回复
不懂接分
mimong_lin 2008-06-27
  • 打赏
  • 举报
回复
谢谢LS的.

我现在的做法是,连GetProcAddress操作都不要了,就只是装载和卸载.还是一样的问题.

1 "DLL中访问了无效的地址","DLL 中错误的使用了指针", DLL的入口函数中没有任何操作,我想应该不会是这两方面的原因.

2 虽然继承的DLL中没有静态变量,但是在一些多个DLL公用的文件中,都定义着全局变量, 这个相关性大一点了?
而且在不同的DLL中,都定义了一些相同的变量,这会否也是问题?
loveshell 2008-06-27
  • 打赏
  • 举报
回复
在网上找到的几个可能的原因
1.DLL中访问了无效地址:即访问的变量或结构体没有被初始化或被函数输出值初始化等
2.DLL 中错误的使用了指针.
3.继承的基类中有静态的变量,而此基类又在另一个dll中。
mimong_lin 2008-06-27
  • 打赏
  • 举报
回复
我也认识是DLL文件的问题.
但是,我现在只是LoadLibrary都出问题,不知道你说的调试DLL是怎么个调试法?
  • 打赏
  • 举报
回复
你能不能调试dll ?
那先调试一下dll,应该是dll的问题。
数据集可视化效果见下方。 【数据集概况】 · 检测类别(中文):[公交车(bus), 车辆(vehicle)] · 训练集:1899 张 · 验证集:0 张 · 测试集:0 张 · 总计:1899 张 该数据集聚焦于城市道路环境下的车辆检测任务,旨在为智能交通系统提供高质量的标注数据支持。通过采集真实道路场景中的各类车辆图像,该数据集能够有效支撑车辆识别与分类模型的训练与优化,具有较高的实用价值和研究意义。数据集覆盖了多种车辆类型,包括公交车和普通车辆,为复杂交通环境下的目标检测提供了丰富的样本。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 96 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.9884 Precision | 0.9513 Recall | 0.9659 train/box_loss | 0.0783 train/cls_loss | 0.0416 val/box_loss | 0.1259 val/cls_loss | 0.0771 【训练过程分析】 96 轮训练后 mAP50 达到 0.9950,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.9884,和 mAP50 差距仅 0.01,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9513、Recall 0.9659,精召双高,模型对公交车、车辆的检测能力强。多类检测中,不同类别性能可能有差异,需关注难例类别的表现。 【预测效果展示...
内容概要:本文系统研究了基于连续小波变换(CWT)与多种深度学习模型相结合的机械故障诊断方法,利用凯斯西储大学轴承故障公开数据集进行实验验证,并提供了完整的Matlab代码实现。研究首先通过连续小波变换将一维振动信号转化为二维时频图像,以增强信号的时频特征表达能力;随后构建并对比了CNN、ResNet、CNN-SVM、CNN-BiGRU、CNN-LSTM等多种深度神经网络模型用于故障分类识别,全面分析各模型在诊断精度、收敛速度与泛化能力等方面的性能差异。该研究融合信号处理与深度学习技术,属于具有创新性的未发表成果,达到可复现SCI一区论文水平。; 适合人群:适用于具备信号处理基础和机器学习知识,从事故障诊断、状态监测、工业自动化等领域的研究生、科研人员及工程技术开发者;尤其适合熟悉Matlab编程并希望开展相关课题研究或工程应用的专业人士。; 使用场景及目标:①应用于旋转机械设备(如电机、齿轮箱、轴承等)的早期故障检测与智能分类;②支撑学术科研中关于深度学习与信号处理融合方法的研究与高水平论文复现;③作为课程设计、毕业设计或科研项目的实践案例,提升从数据预处理到模型构建再到实证分析的全流程能力。; 阅读建议:建议结合所提供的Matlab代码同步运行与调试,重点关注连续小波变换的参数选择、时频图生成策略以及各类深度学习模型的网络结构设计与训练细节,同时可进一步探索其他小波基函数、优化算法或多模型融合策略以拓展研究深度。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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