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位长,所以移植的时候代码需要做相关的改变,这一点是目前最困扰我的,我在网上查的资料都只说了类型之间的变化, 但没有说应该做怎样修改,所以希望大家能帮帮忙啊。 展开
因此出现两个问题:
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位长,所以移植的时候代码需要做相关的改变,这一点是目前最困扰我的,我在网上查的资料都只说了类型之间的变化, 但没有说应该做怎样修改,所以希望大家能帮帮忙啊。 展开
展开全部
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了。
2. 你们的程序内部不会直接就是用 int/long/short之类的去定义数据的吧? 一般都是要用typedef的方式来定义,比如
typedef short INT16;
typedef int INT32;
在程序内部都是用 INT16/INT32这样的东西来定义数据。这样移植的时候只要修改INT16/INT32这些类型声明就可以了。
如果你们的程序全部都是直接使用int/short的,那么可以先把所有的源文件里的 int/short 替换成类似于我前面说的 INT16/INT32之类的定义 (可以用一些工具/脚本来自动替换),然后再移植,只要修改INT16/INT32的定义就OK了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询