首页
社区
课程
招聘
[求助]DLL为无效的windows映像
发表于: 2013-9-12 16:04 8266

[求助]DLL为无效的windows映像

2013-9-12 16:04
8266
为了使用方便,我把代码做成了DLL文件,编译环境是 XP + VS2008。
同时为了减小代码体积,我在代码头部添加了

//自定义对齐方式
#pragma comment (linker, "/ALIGN:1024")
#pragma comment(linker, "/FILEALIGN:1024")

// 合并区段
#pragma comment(linker, "/SECTION:.data,REW")
#pragma comment(linker, "/MERGE:.rdata=.data")
#pragma comment(linker, "/MERGE:.text=.data")

// 优化选项
#pragma comment(linker, "/opt:nowin98")
#pragma comment(linker, "/opt:ref")
#pragma comment (linker, "/OPT:ICF")

可是在加载DLL的时候弹出:应用程序或DLL XXXXX 为无效的windows映像,请再检测一下您的安装盘   这个对话框。

如果我不加这段代码的话,DLL能被正常加载。

此外,在编译时,出现4个warning

warning LNK4229: 遇到无效的指令“/FILEALIGN:1024”;已忽略
warning LNK4229: 遇到无效的指令“/opt:nowin98”;已忽略
warning LNK4229: 遇到无效的指令“/opt:ref”;已忽略
warning LNK4229: 遇到无效的指令“/OPT:ICF”;已忽略

难道这几个编译选项没用到吗?

盼高手解答!!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
都说了无效,,还有疑问吗。
给个权威的链接给你看一下:http://msdn.microsoft.com/en-us/library/7f0aews7%28v=vs.71%29.aspx
2013-9-13 00:09
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那第一个问题, XXX无效的映像 ,有谁遇到过的吗
2013-9-13 10:13
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
估计是合并区段?
2013-9-13 10:16
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
5
节对齐值错误了,也许是内存对齐粒度值,也也许是文件对齐粒度值错误

#pragma comment (linker, "/ALIGN:1024")          ??
#pragma comment(linker, "/FILEALIGN:1024")   ??
2013-9-15 11:01
0
雪    币: 118
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
vc6的东西楼主一定要搬到vc9
优化那几个 在ide里都有图形选项.

无效镜像是这句造成的.
#pragma comment (linker, "/ALIGN:1024")

vc6可以设到0x200(512)
vc9如果写驱动忽略默认库只用ntoskrnl.lib 对齐设置到0x20都没问题.
但是貌似一带crt库就无效镜像了.而且应该会跳警告吧。
2013-9-24 23:53
0
游客
登录 | 注册 方可回帖
返回
//