[C++工程] x86向x64移植, 系统DLL版本怪异,但工作正常.

lollol1 2010-11-24 04:39:14
Hi all,
有一个32位老程序要移植到64位上,我在 WIN XP & VS2005 & 活动解决方案平台x64 上编译出EXE和DLL,COPY到一台WIN2003 x64 的 F:\Program Files (x86)\XXXXXX 下运行. works just fine.

然后我在x64机器上用depends工具(64位版)view了一下DLL,在面版里发现我自己的DLL,cpu显示为x64 ,但是其depend的系统DLL,比如说KERNEL32.DLL是在windows\syswow64下的,WINMM.DLL是windows\system32下的, 所有系统DLL CPU显示均为X86.

我知道syswow64是windows-on-windows 64的意思, 里面放的DLL用来兼容32位程序.而system32里是放64位版本的DLL.

然后我跑去用depends工具(64位版)view了一下windows\system32\kernel32.dll发现cpu显示为x86...好象所有的系统DLLCPU都是显示x86,难道不应该是x64吗?

我在winxp x86上编译时,导入的系统DLL的导入库(比如说winmm.lib wininet.lib)这些应该都是32位的.

question#1 以前没有做过X86 TO X64, 请问, 以上情况是正常的吗?

question#2 把程序代码COPY到x64的机器上运行vs for x64编译出来的 EXE和DLL 所depend的系统DLL是什么样的?(抱歉,我虽然有台x64的2003,但不能在上面装VS,更不能COPY代码过去编译)

Thanks in advance...
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
suhuaiqiang_janlay 2010-11-24
  • 打赏
  • 举报
回复
mark,没试过,一起等待答复。。。
lollol1 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhao4zhong1 的回复:]

最好最省事的方法是在x64系统的x86 32位虚拟机里面运行32位程序,避免移植到x64的工作量和风险。
[/Quote]

1.工作需要,我没法改变.

2.听说X64上跑X86,因为字长的原因或是CPU指令变多或是什么的会导致性能慢一些(忘记出处了).对于高吞吐量的我的系统可能会接受不了.

3.可讨论一下学习移植X64.说不定以后就直接要在X64上干活,想多了解一些.

zhaozhong, 你有移植的经验吗?
赵4老师 2010-11-24
  • 打赏
  • 举报
回复
最好最省事的方法是在x64系统的x86 32位虚拟机里面运行32位程序,避免移植到x64的工作量和风险。
lollol1 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]

x64机器上,depends看到的那些系统dll标识,是红色的还是正常的灰色?
[/Quote]

是红色的,does it imply something?

depends上看到我自己编译出来的DLL是正常灰色,CPU显示x64,系统的全红,CPU显示x86
luciferisnotsatan 2010-11-24
  • 打赏
  • 举报
回复
x64机器上,depends看到的那些系统dll标识,是红色的还是正常的灰色?

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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