能力值:
( LV2,RANK:10 )
|
-
-
2 楼
用了类似cstring这些类似库都会附带依赖的DLL 进去,要单独处理或者改用其他方法。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
楼主电脑上装什么杀毒软件?
|
能力值:
( LV4,RANK:40 )
|
-
-
4 楼
看雪有帖子介绍了怎么解决mfc资源崩溃的问题,搜一下
|
能力值:
( LV4,RANK:40 )
|
-
-
5 楼
看雪有帖子介绍了怎么解决mfc资源崩溃的问题,搜一下
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
string wsting 都属于类对象,而类对象初始化的时候会申请一段内存用于存放类成员.DLL卸载自身后可能会释放掉这些内存. 试试重定位好后,重新调用一下 PIMAGE_NT_HEADERS->OptionalHeader->AddressOfEntryPoint (DLLMAIN入口)
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
Rookietp
用了类似cstring这些类似库都会附带依赖的DLL 进去,要单独处理或者改用其他方法。
MT编译应该是不会附带依赖的DLL的,而且调试跟进构造函数确实没有用到其它DLL
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不是用MFC的框架也会崩溃,所以也不会是MFC 资源问题
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
lononan
string wsting 都属于类对象,而类对象初始化的时候会申请一段内存用于存放类成员.DLL卸载自身后可能会释放掉这些内存.
试试重定位好后,重新调用一下 PIMAGE_NT_HEADERS- ...
确实是内存问题,跟进去是一个CALL eax 不知道call 到哪里去了,如果DLL不卸载自身是没问题的, 不过有个疑问局部变量string 等不是执行了代码才构造内存的吗,为什么还会和原来的DLL地址有关呢
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
萝卜牛肉
确实是内存问题,跟进去是一个CALL eax 不知道call 到哪里去了,如果DLL不卸载自身是没问题的,
不过有个疑问局部变量string 等不是执行了代码才构造内存的吗,为什么还会和原来的DLL ...
因为string是属于C++运行时库管理的,DLL卸载了,运行时库会自动销毁string这些类申请的内存,对运行时库我一直都是这么理解的.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
方便的话,发你的代码给我,我帮你调一下。
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
萝卜牛肉
确实是内存问题,跟进去是一个CALL eax 不知道call 到哪里去了,如果DLL不卸载自身是没问题的,
不过有个疑问局部变量string 等不是执行了代码才构造内存的吗,为什么还会和原来的DLL ...
VS现在编译的DLL,默认的DLLMAIN不是真正的入口,如果你自己#pragma comment(linker,"/entry:DllMain")重定义入口函数,你会发现用到的运行时库组件(比如sting)的时候无法通过编译,因为string这些东西调用的时候,会加载运行时库并调用运行时库初始化函数(调用过程是放在vs封装好的入口里,不是DLLMAIN),用于管理运行时库组件运行过程产生的内存,当DLL卸载的时候会自动帮我们把这些内存销毁掉,这就是为什么string这些东西用着那么方便,还没有内存泄露的原因.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
无名蛋蛋
方便的话,发你的代码给我,我帮你调一下。
多谢了,我想现在我有点明白原因了,自已应该可以调试出来
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
非常感谢你们的解答,好人一生平安
最后于 2019-4-22 22:01
被萝卜牛肉编辑
,原因:
|
|
|