Articles of 32bit 64bit

如何基于目标机器(32位或64位)有条件地安装WiX文件?

我有一个32位版本和64位版本的文件。 如果我在32位机器上安装我的应用程序,我想要安装32位版本的文件。 同样,如果安装在64位机器上运行,则应该安装64位版本。 如何使用WiX来检查安装程序正在运行的机器types? 请,没有一个人的答案。 我正在寻找特定的WiX标签,并把它们放在我的WiX脚本中。

我怎样才能确定一个进程是32位还是64位?

可能重复: 我如何testing一个Windows DLL以确定它是32位还是64位? 给定一个Windows进程句柄,如何使用C ++代码确定进程是32位还是64位?

会有一个Win64 API吗?

如果我是正确的,Win32正在适应或适应64位窗口,例如,GetWindowLongPtr在64位而不是在32位GetWindowLong。 会不会有一个Win64 Api,如果有的话,是否有任何迹象表明什么时候会发生转变? 我对这个问题不太了解,所以如果我有什么明显的错误,我很抱歉。 在此先感谢,埃尔。

我应该提供我的应用程序的x64版本吗?

也许我在这里错过了x64平台的一个主要观点,但是我的理解是,当大量的内存,大指针或其他要求很高的x64应用程序只比x86更好的性能(在x64操作系统和硬件上)涉及因素。 不过,我已经注意到一些小型的应用程序,除了标准的x86版本之外,还提供了他们的安装程序的x64版本。 由于x86在使用WoW的Windows x64上运行得很好,对我发布我的应用程序的x64编译版本有什么好处吗? 照我看来: 优点: 虽然性能可能更高(在什么情况下) 缺点: 额外的构build来创build/支持 x64目标中可能存在的x86目标中不存在的bug 依赖x64版本的供应商/操作系统DLL,需要不同的安装清单并引入其他故障排除复杂性 什么是一些令人信服的理由,应该使我重新考虑添加我的应用程序的x64编译版本?

在64位C ++程序中使用32位库

有没有办法在64位系统中使用旧的32位静态库* .a。 没有机会获得这个旧库的源代码来重新编译它。 我也不想在gcc中使用-m32,因为程序使用了许多64位库。 谢谢。

Eclipse Kepler在64位Ubuntu上冻结

我刚刚把我的Ubuntu升级到14.04几天前,在过程中从32位切换到64位。 从那以后,Eclipse变得非常不稳定。 运行了几分钟后,它将开始随机冻结更长和更长的时间,特别是在代码完成(已经不得不禁用)的时候,而且在剪切/粘贴,偶尔保存,有时没有明显的原因所有。 在冻结期间,它将两个CPU泵到100%。 有时它会回来,好像什么也没有发生,有时会出现内存不足,超时或超出GC开销的错误。 我已经把它的Xmx增加到了2GB,正如任何处理这个问题的线程所build议的那样,但是它没有帮助。 事实上,他们中没有一个是build议的。 我使用Nodeclipse,Android Developer Tools,Subversive和SQLExplorer运行Kepler。 升级之前,确切的设置完美无瑕。 任何人都可以证实这个问题或(希望最后死亡)build议修复? 如果其他人也有这个我会提交一个错误。 UPDATE 我已经下载了一个x86版本的Eclipse以及Oracle Java 8以及它在启动时抱怨的所有缺失的库,而且这已经被certificate更加稳定。 它仍然冻结内容协助,但除此之外,它似乎是稳定的。 所以这绝对是64位版本的问题。 总结一下在这一点上已经尝试过的和无效的事情: 通过eclipse.ini中的Xmx设置将内存增加到2GB 添加了-Dorg.eclipse.swt.browser.DefaultType=mozilla到eclipse.ini 不同的JVM:OpenJDK 7,Oracle Java 7和8 Eclipse的新安装 我现在已经在bugs.eclipse.org上提交了一个bug: bug报告 更新2 自从安装了32位版本的Eclipse(我早已将其删除)之后,64位版本似乎也运行得更加稳定。 这对我来说真的没有意义,但在过去的几天里,它并没有冻结一次。 谁能确认? 没关系…它仍然在做:( 另外,对于任何有这个问题的人,如果你能在bugs.eclipse.org上的bug报告上发post,我会很感激,因为到目前为止 ,它已经得到了零关注。 更新3 我尝试过的一些东西没有成功: 根据https://bugs.eclipse.org/bugs/show_bug.cgi?id=404776#c22向eclipse.ini添加了-Dorg.eclipse.swt.browser.XULRunnerPath=/dev/null 切换到不同的主题 使用环境variablesGDK_NATIVE_WINDOWS=true 使用环境variablesLIBOVERLAY_SCROLLBAR=0 禁用“标记出现”function 更新4,经过很长时间 显然这不是在Eclipse本身的错误,而是在JSDT。 根据这个错误报告,这个版本是固定的3.7版本,在安装新的Eclipse Mars之后,我无法确认 – 它和以前一样糟糕。 但是,由于其他一些错误,新的Eclipse现在不断运行我的CPU在100%(对电池寿命不利,… …),我决定放弃使用它为我的JavaScript项目,至less为而。 问题:任何一个遭受这个错误的人都可以通过JSDT 3.7确认它消失了吗? 在LONGLONGLONGLONG时间之后更新5 由于这个问题显然不断被人们访问,我想给最后的更新。 […]

在64位Linux中构build32位可执行文件时,我得到crt1.o:即使使用-m32标志也没有这样的文件

我的Linux服务器信息是: [root@centos nan]# uname -a Linux centos 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 默认情况下,gcc将生成64位可执行文件,所以我使用“-m32”标志来构build32位可执行文件。 运行以下命令之后: [root@centos nan]# gcc -m32 -oa ac /usr/bin/ld: crt1.o: No such file: No such file or directory collect2: ld returned 1 exit status 那么如何在64位Linux中构build32位可执行文件?

在32位模式和64位操作系统的64位模式下编译ioctl函数有什么不同?

我有一个64位的Enterprice SuSE 11我有一个应用程序打开一个HIDRAW设备,并运行一个ioctl函数来获取这个设备的原始信息,如下所示: struct hidraw_devinfo devinfo; int fd = open("/dev/hidraw0", 0); int ret = ioctl(fd, HIDIOCGRAWINFO, &devinfo); … 如果我以64位模式编译这个程序,没有错误,也没有问题,当我执行应用程序时,ioctl函数可以正常工作。 g++ main.cpp 如果我用32位模式编译这个程序,也没有错误,也没有问题。 但是当我执行应用程序的ioctl函数返回EINVAL错误(errno = 22,无效的参数) g++ -m32 main.cpp 有什么问题? 注意: struct hidraw_devinfo { __u32 bustype; __s16 vendor; __s16 product; }

java.lang.NoClassDefFoundError:无法初始化类java.awt.Toolkit

我正在研究XUbuntu 13.04和开发摇摆应用程序。 正如我只想尝试该应用程序,我遇到了java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit启动时java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit 。 我发现了几个有关服务器/客户端虚拟机的问题,并注意到我有一台服务器虚拟机,而对于Linux 64,没有客户端虚拟机了。 但恕我直言,这个问题不应该依赖于我运行的虚拟机。 有没有人注意到这个问题,并解决了它? 我究竟做错了什么? 用64bit的jdk一切正常,但是当我尝试使用32位jdk的启动失败。 提前致谢! PS:Java版本是1.7.0_25 ,与1.7.0_09相同 编辑 使用无头模式时,会出现以下例外情况: java.lang.reflect.InvocationTargetException at java.awt.EventQueue.invokeAndWait(EventQueue.java:1272) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1247) at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1349) at Main.main(Main.java:218) Caused by: java.awt.HeadlessException at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) at java.awt.Window.<init>(Window.java:535) at java.awt.Frame.<init>(Frame.java:420) at java.awt.Frame.<init>(Frame.java:385) at javax.swing.JFrame.<init>(JFrame.java:180) at ..MyFrame.<init>(MyFrame.java:23)

在64位Linux上从32位模式切换到64位(长模式)

我的程序是在x86_64 CPU(64位操作系统,Ubuntu 8.04)上运行的32位模式。 是否可以暂时在用户模式下切换到64位模式(长时间模式)? 如果是这样,怎么样? 背景故事:我正在写一个链接到32位模式程序的库,所以它在启动时必须是32位模式。 但是,我想使用更快的x86_64入侵以获得更好的性能。 所以我想切换到64位模式做一些纯粹的计算(没有操作系统的交互;不需要64位寻址),返回到32位,然后返回给调用者。 我发现有一些相关但不同的问题。 例如, 在64位程序中运行32位代码 在32位操作系统中运行64位代码 我的问题是“在32位程序,64位操作系统中运行64位代码”