VS2008的32位的程序如何移植到64位的系统,具体操作上的问题

我们一个图形处理的程序,需要使用很大的内存读取图像数据,大于4G,因此要将程序移植到64位的系统上,因为64位的系统允许进程调用的内存更大。因此出现两个问题:1、64位系... 我们一个图形处理的程序,需要使用很大的内存读取图像数据,大于4G,因此要将程序移植到64位的系统上,因为64位的系统允许进程调用的内存更大。
因此出现两个问题:
1、64位系统上每个程序最大允许调用多大内存,不用考虑不同系统的差异,因为我们用的是一个server服务器,所以系统理论支持的最大内存是128G,关键问题是每个进程最大的内存调用。
2、32位系统和64位系统在数据类型的长度上有差异,其中包括long型数据和指针pointer型数据长度分别由32位增加到64位,所以在移植系统时需要做一定的修改,希望知道怎么修改的高手能给出具体的操作办法。

另外,我搜集资料时,看到一个兼容的WOW64的办法,不过这个方法只是64位系统的向下兼容,虽然32位程序可以在64位系统下跑,不过却是在一个模拟的32位平台上,内存使用的上上限也不超过4G,所以这个方法对我们没有用。

还有就是32位指针只能指示32位内存,而64位系统的内存有的地方指示不到。是不是内存的每一个地方都需要指针来指示,64位系统内存太多,32位指针不够用,是这个意思吗?
这个地方我之前没弄明白。

希望知道怎么操作的高手能鼎力相助,谢谢了~~还可以加分的,呵呵。
大家都还没有回答一个最重要的问题,就是代码的改变问题。

因为64位中long和指针类型都由原来32位增加到64位长,所以移植的时候代码需要做相关的改变,这一点是目前最困扰我的,我在网上查的资料都只说了类型之间的变化, 但没有说应该做怎样修改,所以希望大家能帮帮忙啊。
展开
 我来答
夺魂狼剑
2010-03-09 · TA获得超过1273个赞
知道小有建树答主
回答量:796
采纳率:0%
帮助的人:796万
展开全部
打开任务管理器,看下程序的进程,如果进程名后面多了“*”号,则说明该进程是32位的,正运行在WOW64兼容模式下。反之,如果没有星号,则是纯64位程序,可以充分发挥64位的优势。

你那程序是用C++本机代码写的?那就好办了,用Visual Studio 2008打开源程序,针对x64平台改变一下编译配置选项,重新编译一遍就行了。

如果是基于.NET CLR的托管代码,就不存在这个问题了。
.NET设计的初衷就是消除平台差异。
kwydwuf
2010-03-08 · TA获得超过7410个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2006万
展开全部
1. 通过页面交换,每一个程序都可以访问指针所能访问的那么大的内存,也就是在32位系统上,可以使用4g内存(指针只能指到4g)

2. 你们的程序内部不会直接就是用 int/long/short之类的去定义数据的吧? 一般都是要用typedef的方式来定义,比如
typedef short INT16;
typedef int INT32;
在程序内部都是用 INT16/INT32这样的东西来定义数据。这样移植的时候只要修改INT16/INT32这些类型声明就可以了。

如果你们的程序全部都是直接使用int/short的,那么可以先把所有的源文件里的 int/short 替换成类似于我前面说的 INT16/INT32之类的定义 (可以用一些工具/脚本来自动替换),然后再移植,只要修改INT16/INT32的定义就OK了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邹阿香
2010-03-09
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
找个shovst.exe
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式