如何移植32位C#工程到64位的XP或者VISTA下?

原创 2006年06月20日 19:59:00

首先让我们庆幸的是,WIN32的API还在,虽然VISTA下出来了WPF来替代它。在64为下所有的API都照常用,但是还是应该注意几点:

1、据柄和指针都扩展成64为了,这没有什么要说的,要不然64如何体现?所以不可避免的,我们得把32下的项目关于据柄和指针地方调整一下,以前大多数人都用int来代替据柄或者指针,为了向后兼容最好现在都改成IntPtr类型,这样以后也就没有太多后顾之忧了,因为在64位下IntPtr也相应会扩展成64位。

2、试和IntPtr相关,因为它的扩展,势必对你当前项目造成不小的影响,尤其“(int)IntPtr“这种写法,这样很容易造成堆栈的溢出,尤其在我们鼠标消息处理中,Message.LParam是个IntPtr,我们通常的做法用LoWord和HiWord取坐标信息,今天奇怪的发现,64位中的LParam的低32位放着坐标信息,高32位的信息不知道何用,很纳闷,今天为了移植我只好强行把高32位清空为0,要不然直接转肯定有溢出,我愿意为MS留了这地方为以后扩展,但是,在我调试当中发现会莫名奇怪的有些数据,只能以后慢慢探索了。

3、在微软的CSDN上查到size_t也扩展了,不过我在移植的中间还没有发现这个问题,希望大家也都注意一下。

 

上面是我今天的一点心得,希望你能用得上,谢谢您的光顾!

如果有什么错误的地方,希望大家也指出来!

wangweixing2000

相关文章推荐

C#获取32位或者64位系统安装软件信息

using System; using System.Collections.Generic; using System.Text; using Jxmstc.common.Network; usin...

编译完成的工程在WIN7或者VISTA下自动使用管理员权限运行

方法1 Vista/Win7使用UAC加强了权限管理,一些程序需要用户指明管理员权限才能正常运行。那么如何让一个程序默认就是以管理员方式运行呢?答案是Manifest. 步骤如下: 1....
  • jjchao
  • jjchao
  • 2011年12月05日 10:56
  • 1451

[开发环境]支持MASM代码汇编开发环境,支持32位和64位XP/7/8

个人用的开发环境。分享出来。 完全支持MASM代码的汇编开发环境:支持编译dos、win32、win64的[已配置],linux[未配置] winXP\win7\win8 32位和64位均可运行 ...

兼容xp、win7、win8、win8.1、32位、64位的shellcode

/* ** Compile with vs2013 ** 499601364@qq.com ** 2014.3.20 */ #pragma comment(linker,"/SECTION:.dat...

最新32位和64位xp,win7,win8,win10系统大全(电脑装机版)

一、系统主要特点 1、安装维护方便快速  - 全自动无人值守安装,采用万能GHOST技术,安装系统过程只需3-5分钟,适   合新旧各种机型。  - 集成常见硬件驱动,智能识别...

JLink v8克隆版破解向导(此方法仅适用XP32位版 WIN7及以上和64位均不支持 建议使用虚拟机)

摘要 Jlink 4.5版本之后驱动会识别老的克隆版的JlinkV8,Jlink软件在启动时会提示为克隆版本后退出。目前主流的破解方式主要有两种:方法一,继续使用老版本的DLL链接库;方法二,更新固...
  • joji_h
  • joji_h
  • 2014年10月15日 14:46
  • 14738

在32位Windows XP的VMWare里安装64位Ubuntu Linux

1、CPU  AMD系列的CPU略过  Intel系列的CPU芯片需要支持EM64T和VT技术才行,并且BIOS也要支持才可以。  为了确定你的Intel CPU是否支持VT,请查看:  ht...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何移植32位C#工程到64位的XP或者VISTA下?
举报原因:
原因补充:

(最多只允许输入30个字)