VC中改变PE文件中Dos Stub程序(显示This program cannot be run in DOS mode)那一段程序.

29 篇文章 0 订阅
17 篇文章 0 订阅
 

VC中改变PE文件中Dos Stub程序(显示This program cannot be run in DOS mode)那一段程序.


1. 先做一个纯DOS下的dos16.exe, (masm5.0编译连接)
2. 然后做一个window下的win32.exe (VC6.0编译连接)
3. 在Vc++菜单|project|project|settings|link|projext   Options:下加入
  /Stub:dos16.exe (也就是在连接选项中接入改连接选项)
  或者在程序中加入:#pragma   comment(linker, "/Stub:dos16.exe")
  (如果没有/stub:filename选项, VC默认加入winstub.exe到Win32.exe中)
编译win32.exe时, VC出现如下警告
    dos16.exe : warning LNK4060: stub file missing full MS-DOS header; rebuild stub with /KNOWEAS 16-bit LINK option
意思使用masm5.0 连接dos16.exe时, 增加/KNOWEAS 选项, 但是该选项masm5.0不支持, 要使用masm6.11

经查找:
http://msdn.microsoft.com/en-us/library/aa267288(v=vs.60).aspx
Linker Tools Warning LNK4060
Visual Studio 6.0
stub file missing full MS-DOS header; rebuild stub with /KNOWEAS 16-bit LINK option
原因在这里:
The MS-DOS application specified with the /STUB option does not have a full 40-byte header. The stub program may not run as expected.
To rebuild the 16-bit stub with a full 40-byte header, use the undocumented /KNOWEAS option with the 16-bit LINK version 5.5x or higher.
也就是masm5.0的连接器版本过低.
解决办法是使用masm6.11
连接时增加/KNOWEAS 选项
例如
>link.exe /KNOWEAS dos16.obj

dos16.exe的编译连接过程请看
http://blog.csdn.net/cay22/article/details/7192848

 

其他

http://topic.csdn.net/t/20030321/10/1558195.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值