hur.cn - 华软网

 热门搜索

谁知道怎么突破VS2005的基址限制。

  作者:未知    来源:网络    更新时间:2011/8/13
原来一直在用VC6写操作系统,可以把基址设在0xC0000000。后来想用VS2005来写,结果发现基址不能设在0xC0000000的位置,有谁能帮我解决一下这个问题?
换了WIN7后,VC6用着有点不太舒服。
---华软 网友回答---
/BASE(基址) 

---华软网友回复---
#pragma comment(linker, "/base:"0xC000000")  ??
---华软网友回复---
试了下08可以设在那个位置
---华软网友回复---
08可以?我换成vs2010都不行。
---华软网友回复---
在链接选项里加
---华软网友回复---
工程属性下Linker/Advanced有个Base Address应该可以自己指定
---华软网友回复---
呃……为什么不实验一下呢?可以指定,但是编译错误。错误信息如下:

1>------ 已启动全部重新生成: 项目: test, 配置: Debug Win32 ------
1>  stdafx.cpp
1>  test.cpp
1>LINK : fatal error LNK1249: 映像超过最大范围,其基址为 C0000000,大小为 0x1B000
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

---华软网友回复---
唉?还有这情况?应该是同分配的问题,我去试试
---华软网友回复---
看样子是MS故意这么设置的,不可能突破,只能用回VC6了。
---华软网友回复---
引用楼主 robin97 的回复:
原来一直在用VC6写操作系统,可以把基址设在0xC0000000。后来想用VS2005来写,结果发现基址不能设在0xC0000000的位置,有谁能帮我解决一下这个问题?
换了WIN7后,VC6用着有点不太舒服。



指明基址有什么用?
---华软网友回复---
用VC6写程序,默认的装载地址是在4M的位置。而操作系统通常都安排在高位内存,大多数都是安排在0xC0000000这个位置,也就是3G以上的内存位置。所以在编译的时候,要把程序的基地址设为3G。
---华软网友回复---
结贴了。没有办法,只好自己做了一个loader,在连接的时候加上重定位信息,自己做个image出来,还是直接可执行的。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。