VS2008的32位的程序如何移植到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位长,所以移植的时候代码需要做相关的改变,这一点是目前最困扰我的,我在网上查的资料都只说了类型之间的变化, 但没有说应该做怎样修改,所以希望大家能帮帮忙啊。

打开任务管理器,看下程序的进程,如果进程名后面多了“*”号,则说明该进程是32位的,正运行在WOW64兼容模式下。反之,如果没有星号,则是纯64位程序,可以充分发挥64位的优势。

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

如果是基于.NET CLR的托管代码,就不存在这个问题了。
.NET设计的初衷就是消除平台差异。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-08
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个回答  2010-03-09
找个shovst.exe

VS2008的32位的程序如何移植到64位的系统,具体操作上的问题
打开任务管理器,看下程序的进程,如果进程名后面多了“*”号,则说明该进程是32位的,正运行在WOW64兼容模式下。反之,如果没有星号,则是纯64位程序,可以充分发挥64位的优势。你那程序是用C++本机代码写的?那就好办了,用Visual Studio 2008打开源程序,针对x64平台改变一下编译配置选项,重新编译...

我现在安装的有VC++6.0和VS2008,操作系统为32位。想问一下怎么才能开发...
1. 在Visual C++ IDE中, 打开一个已经在的32位工程(例如: MyApplication)2. 在”Build”菜单上, 点击”Configurations”.3. 在”Configurations”对话框上, 点击”Add”.4. 在”Add Project Configuration”对话框上, 设置”Configuration”到Debug64, 然后, 在”Copy Settings from”列表框中点击”MyApplication...

32位机上用vs2008开发的c++程序如何能在64位系统下运行?
不过和32位Windows上一样,运行VC++编写的32位程序可能会需要32位的C运行库的dll。也就是可能要装那个Microsoft Visual C++ 2008 Redistributable Package (x86)才能正常工作。另外VS2008可以直接生成64位的可执行程序。也就是这个程序在本机没办法用,只有在64位系统里可以跑。当然默认情况下跑程序的那个...

32系统开发的软件如何在64系统上运行
既然是你开发的,那么你可以再64为操作系统(用vmware装一个)中重新编译一下就可以了,如果有冲突,也应该不多,很好解决的。

如何在64位机器上运行32位程序
先介绍一下平台系统:windows server 2008网络服务:IIS 7.0需要在web程序里面调用以前封装的c++的dll工欲善其事,必先利其器。由于手头没有可安装在64位机器上的vs2008,于是安装vs2010,由于向下兼容,可以放心的用有两种思路:一个是将web程序和c++的dll都编译成64位的另一种是都编译成32位的这...

我的VS2008装在C盘,如何移动到D盘
解决方案方法有两个 一个是先卸载在重新安装到D盘 还有就是你可以把那个文件的整个文件夹复制粘贴到D盘 这样做有一个不好的对方就是你曾经的那些快捷方式还有开始菜单里的那些东东都不可以用了 你可以在D盘找到你要的那个应用程序的主程序 然后发送快捷方式到桌面 万事大吉啦 就这么简单 不用的快捷方式...

在Visual Studio下编写64位应用程序应注意什么
一、确定在64位操作系统上运行还是在WOW64下运行。在Visual Studio平台中最后对64位应用程序编译时,需要指定这个应用程序是在64位操作系统上作为本机应用程序运行还是在WOW64环境下运行。这个 WOW64环境是一个由操作系统提供的兼容性环境。这个环境主要是让32位应用程序也能够在64位的操作系统上运行。换句...

visual c++ 分32位系统和64位系统么?
到目前为止,所有的visual系列软件在安装时不分32位或64位。相关知识点延伸:1、从visual系列的2006版开始,支持32位和64位编译,也说是说,支持生成64位的应用软件。2、要进行64位的编译,必须将visual系列软件安装在64位的windows操作系统上。

Win10 64位系统用VS2008 怎样编译出32位的可执行文件
在"配置管理器"中把所有项目的"平台"都设置为32位的.试试看呢。开发人员开发的产品如果是面向普通库户的建议还是装32位的。

VS2008写的C#程序在自己电脑可以运行,源代码拷贝到另一台电脑上不能调 ...
1。大部分尽可能通用软件运行环境,或在软件的容错多写一些代码,不要试图硬编码。2。更多的考虑,更多的测试。像你描述的问题,“真正需要此文件dx.dntner是不明确的是,这个时候,你可以打开的Delphi项目源代码,或者你也可以直接在开发下dx.dntner电脑,搜索这个文件,看到在什么位置,什么样的程序,...

相似回答