`

windows下 32位程序迁移到64位程序注意步骤

阅读更多

64位程序,最大优势是可以使用的进程地址空间(即虚拟内存)可以达到2^64,(注意:实际上在X86 64位架构上,实际地址为48位),

而在32位机器上,windows默认是用户可使用2GB地址空间(用户),另外2GB属于操作系统使用(内核os),在Linux下则是3GB(用户),1GB(os).

 

由于现代程序进程常常需要使用很大地址范围,因此,2GB通常是不够的(在windows下,有的系统如2000server,通过向启动配置添加 /3GB 开关并使用 /LARGEADDRESSAWARE 开关重新链接应用程序,可以将这种平衡调整为 3GB 用户空间和 1GB 内核空间。但,本人windows XP系统 试过2次,结果蓝屏告终,建议不要轻易尝试这个,后果自负)。

 

windows下程序需要从32位迁移到64位程序基本步骤

  • (1)区别程序数据类型

 

类型 32位 64位
char 1 1
short 2 2
int 4 4
long 4 8
WORD 2 2
DWORD == unsigned long 4 8
void*(指针类型) 4 8
__int64 8 8
size_t == unsigned int 4 8
SIZE_T == unsigned long 4 8
float 4 4
double 8 8
long long 8 8

 

因此,在基本数据类型中,实际只有long 和指针类型发生了变化。

 

操作系统 默认用户空间大小 Windows x86-64 Windows Itanium Linux x86-64 Linux PPC64 Linux 390 64
8192GB
7152GB
500GB
1648GB
4EB
  • (2)检查程序

程序中,凡使用了DWORD,long,SIZE_T,指针字节长度发生变化的,都需要注意了

特别注意 sizeof(),这个运算符号。

 

结构体:结构体有个对齐方式,可以通过编译指令设置,也可以在工程中设置。

windows,vc编译器下:

#pragma pack(字节数),

 

#pragma pack(),如果里面任何字节数,表示使用编译器默认对齐方式。

gcc下:

 __attribute__   ((aligned   (字节位数)));

 

通常,32位程序升级到64位,出错的地方在于读写文件,比如读写一个long或者其扩展的类型(DWROD,SIZE_T,UNIT_PTR等等),读写一个指针。

 

  • (3)编译调试运行,OK了

 

 

分享到:
评论
1 楼 lvdccyb 2012-08-12  
我错了,在windows下:

long 仍然是32位......
linux 64位

相关推荐

    Win 2003 x64操作系统-IIS兼容32位应用程序-解决方案

    在Windows Server 2003 x64操作系统中,IIS (Internet Information Services) 默认配置为支持64位应用程序,但遇到与32位应用程序不兼容...在生产环境中,应考虑将应用程序迁移到64位版本,以实现更好的性能和稳定性。

    Windows操作系统 hansky butterfly从32位jdk迁移至64位启动服务

    在Windows操作系统中,将hansky butterfly从32位Java Development Kit (JDK) 迁移到64位JDK是一项常见的系统升级任务。这通常是为了利用64位系统的内存优势,提升应用程序的性能,或者是因为某些软件需要64位JDK才能...

    Windows到Linux应用迁移.pdf

    API 调用迁移是软件程序迁移的第二个方面,包括 Windows API 到 Linux API 的映射和调用迁移。在 Windows 操作系统上开发的应用程序,通常使用 Windows API 进行调用,而 Linux 操作系统使用的是 Linux API,这就...

    从Windows Server 2008域升级至Windows Server 2016域迁移手册

    【Windows Server 2008 域升级至Windows Server 2016 域迁移手册】 在信息化时代,企业对于IT基础设施的更新换代是保持竞争力的关键步骤之一。Windows Server 2016提供了许多增强的功能和安全性改进,使其成为从...

    实现往linux上应用程序迁移的报告

    【标题】:“实现往Linux上应用程序迁移的报告” 【描述】:应用程序的迁移涉及系统间的兼容性问题,包括系统与应用程序的相互适应性。在Linux系统中,迁移不仅仅是确保应用程序能够运行,还需要全面测试其与Linux...

    人大金仓安装与数据迁移(windows)

    本文将详细介绍如何在Windows操作系统上安装人大金仓数据库(kingbase SE V8),以及如何进行数据迁移,特别是从MySQL迁移到金仓数据库。 首先,我们需要从人大金仓官方网站下载数据库安装包和授权码。下载地址为:...

    从Windows到Linux的C程序移植研究.pdf

    "从Windows到Linux的C程序移植研究" 本文研究了从Windows到Linux的C程序移植,介绍了Linux系统的安装和开发环境的搭建,探讨了C程序移植的方法和经验,并结合实际程序移植结果进行了分析。 Linux系统安装和开发...

    Windows用户目录迁移工具 Profile Relocator

    迁移过程通常包括以下步骤: 1. 安装Profile Relocator:首先,你需要下载并安装这个工具。安装完成后,运行程序并按照向导的指示操作。 2. 选择目标分区:在软件界面中,你需要指定一个目标分区,这个分区应有...

    win2003 64位系统下启用.net 32位应用

    在Windows Server 2003 64位操作系统上运行32位.NET应用程序是一个常见的需求,尤其是在迁移到更现代的硬件平台时。由于.NET Framework有32位(x86)和64位(x64)两种版本,所以在64位系统上启用32位.NET应用程序...

    瀚高数据库windows版数据库迁移工具4.0.3版本【内附使用手册】

    瀚高数据库是一款国内自主研发的高性能、高可用的数据库管理系统,其Windows版数据库迁移工具——HG-Sabre-Migration,主要用于帮助用户在不同数据库系统间进行数据迁移,确保业务连续性和数据完整性。本版本为4.0.3...

    windows程序移植到linux

    ### Windows程序移植到Linux的关键知识点 #### 一、概述与背景 在软件开发领域,将一个操作系统上的程序移植到另一个操作系统上是一项常见的需求。本文主要探讨的是如何将原本运行于Windows平台的应用程序移植到...

    QC9.0从windows迁移到linux系统

    4. **应用程序迁移**:获取QC9.0的Linux版本或进行必要的编译以适应Linux环境。安装并配置应用,确保所有依赖项已正确安装,例如Java运行环境、Web服务器(如Tomcat)等。 5. **权限与用户管理**:Linux的权限管理...

    windows32位mongodb

    在Windows 32位系统上安装MongoDB,我们需要关注一些特定的事项,因为32位系统可能在内存使用上存在限制,这可能会影响到MongoDB的性能。以下是关于"windows 32位mongodb"的相关知识点: 1. **系统兼容性**:...

    代码从windows下visual studio到andriod平台迁移实现步骤

    本文主要讨论的是从Windows平台下的Visual Studio环境迁移到Android平台的具体步骤。这是一个复杂的过程,涉及到对现有代码的修改、新的配置文件的创建以及一些平台特有的问题解决。以下是一些迁移过程中需要重点...

    windows系统P2V迁移工具

    在IT行业中,P2V(Physical to Virtual)迁移是指将运行在物理硬件上的操作系统和应用程序迁移到虚拟化环境中的过程。Windows系统P2V迁移工具是实现这一目标的专业软件,它使得用户能够轻松地将物理服务器上的...

    西数云迁移 图文步骤流程

    然后,拷贝到Linux系统后用root用户安装迁移源端主程序,输入“ls”命令进行查看,并输入命令“rpm-ivh ./mig_agent-V5.1.3-4.x86_64.rpm”安装迁移源端主程序。安装完成后,输入命令“cd /usr/local/migagent/”...

    VC++6.0兼容 32位方法与64位

    5. **64位编程注意事项**:当从32位向64位迁移代码时,需要注意指针大小、数据类型大小的变化以及API调用的兼容性。例如,64位环境下,`long`类型的大小可能不再等于32位,需要使用`int64_t`等类型确保跨平台的正确...

Global site tag (gtag.js) - Google Analytics