怎么样在64位Windows下编写64位C语言程序?

zxgatnudt 2008-06-09 11:22:38

现在的目标是有一个32位的C语言(也有C++的)程序,没有MFC函数
需要移植到64位Windows上去, 已经在Linux下编译通过

现在找不到合适的编译环境,VC6试过肯定不行了;
VS2005也试过,但是新手不太会配置 ,也不知道VS2005分不分64位和32位的,装的版本是别人给的

请高手给个办法,我的操作系统是64位Visita
...全文
1859 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubingqian 2008-06-12
  • 打赏
  • 举报
回复
没人说64位编译器的long就一定也是8字节。
zxgatnudt 2008-06-12
  • 打赏
  • 举报
回复
在XP X64下写的动态库,调用了好多X86的系统动态库,还有的找不到,怎么解决
sheshuyiwo_xiajie 2008-06-11
  • 打赏
  • 举报
回复

call "f:\Program Files\Microsoft Platform SDK\SetEnv.Cmd" /XP64 /RETAIL
call "f:\Program Files\Microsoft DirectX 9.0 SDK (April 2005)\Utilities\Bin\dx_setenv" AMD64
Set Lib=f:\WINDDK\3790.1830\lib\wnet\amd64;%Lib%
Set Include=f:\WINDDK\3790.1830\inc\wnet;%Include%
start "" "f:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE" /useenv

写一个批处理就OK了
zxgatnudt 2008-06-11
  • 打赏
  • 举报
回复
前面的所有办法都行不通
最后装了个64位的XP可以编译了

但是指针类型的变量是8字节长,long类型的还是4字节
请问怎么回事?

是64windows下就是这样还是我哪里没有设置好
aruaru77 2008-06-10
  • 打赏
  • 举报
回复
哈 前面已经有大侠说得很清楚啦,我就不多啰嗦拉~
只为你名字后面的四个字母,上来顶一下^^
  • 打赏
  • 举报
回复
直接设置64位编译模式既可
在win32上也能编译出win64位的程序
xieqidong 2008-06-10
  • 打赏
  • 举报
回复
看看这个地方:http://blog.csdn.net/xieqidong/category/377472.aspx
帅得不敢出门 2008-06-10
  • 打赏
  • 举报
回复
为16、32、64位架构编写可移植代码
http://www.cndw.com/tech/program/2006042152635.asp
zhangbin_115 2008-06-10
  • 打赏
  • 举报
回复
拜读
zxgatnudt 2008-06-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 stonezhong_2008 的回复:]
重新贴图

第一步


第二步
[/Quote]
这个当然试过了,编译会报错的
stonezhong_2008 2008-06-10
  • 打赏
  • 举报
回复
重新贴图

第一步


第二步
stonezhong_2008 2008-06-10
  • 打赏
  • 举报
回复
用Visual Studio 2005即可。

假设你已经建好了VS2005的Project。
第一步,到Configuration Manager中点击"Active solution Platform"下拉框,选<New...>见图1
Image and video hosting by TinyPic

第二步,在New Solution Platform中选x64就可以了见图2
Image and video hosting by TinyPic
fox000002 2008-06-10
  • 打赏
  • 举报
回复
问 MSDN

里面的编译64位程序部分
fibbery 2008-06-09
  • 打赏
  • 举报
回复
vs2008好像可以,编译的方式有x64的,但是我在我的虚拟机上怎么也没实现!共同研究!
K行天下 2008-06-09
  • 打赏
  • 举报
回复

事实上指针大小和整形相同。64位系统sizeof(void*) == 8 and sizeof(int) 通常保持4。忽略可能会导致的不正确分配和冲突。

依赖某一字节按机器语言排序。这对位设置的执行特别重要,因为位集合(bitset)可以是字节,整形或者长整形。

使用长形推测他和int同样大,直接转换这种类型 可能导致几乎不可发现的问题。

堆变量排列。堆变量有时可以不定位在8位界面。如果直接把这样的变量换成64位变量对系统可能碰到些麻烦。但是如果你把64位变量(长整型或双整形)转换为堆却保证绝对一致。堆分配的内存也是一致。

不同结构和阶层的排列规则。64位组织结构通常被排列在64位界面。这导致在IPC,网络(network)和磁盘(disk)共享二进制数据时出现问题。打包数据结构节省资源时如果不考虑排列因素可能会造成问题。

指针运算,64位指针增量为32位指针,反之亦然。64位指针变为32位增8字节,32位指针变为64位减少4字节。

缺少函数返回值时默认为整型(int),这可能造成值短缺。现在回头来看软件端口安全目录,我们能。。。
参考:http://blog.minidx.com/2007/10/08/9.html

另外:http://blog.chinaunix.net/u/553/showart.php?id=115776 介绍的不错,可以看看

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧