我想根据操作系统在构建过程中是64位还是32位来配置visual studio 2005来复制.dll.
我不想指定平台目标是什么.
我的第一次尝试是使用批处理文件来查找Windows版本,但是某些32位和64位版本的Windows共享相同的版本号.
有谁知道有任何方法来检查这个?
谢谢!
根据这个MSDN页面:
WOW64使32位应用程序能够利用64位内核.因此,32位应用程序可以使用更多的内核句柄和窗口句柄.但是,32位应用程序可能无法在WOW64下创建与在基于x86的系统上本机运行时一样多的线程,因为WOW64为每个线程分配了额外的64位堆栈(通常为512 KB).此外,为WOW64本身及其使用的数据结构保留了一定量的地址空间.保留金额取决于处理器; Intel Itanium上保留的内容多于x64处理器上的内容.
如果应用程序在映像头中设置了IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则每个32位应用程序在WOW64环境中都会收到4 GB的虚拟地址空间.如果未设置IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则每个32位应用程序在WOW64环境中接收2 GB的虚拟地址空间.
如何有效地设置IMAGE_FILE_LARGE_ADDRESS_AWARE国旗在我的2007年德尔福的应用程序,这样我可以让我的32位应用程序WOW64 认识和处理多达内存4GB满?
为什么这部分代码失败:
Integer.parseInt("11000000000000000000000000000000",2);
Exception in thread "main" java.lang.NumberFormatException: For input string: "11000000000000000000000000000000"
Run Code Online (Sandbox Code Playgroud)
据我所知,Integer是32位值.上面代码中的0和1的数量是32.如果有31个代码可以工作.为什么会这样?
我有一个非常小的Ubuntu 8.04 64位安装.
当我尝试运行一些32位程序时,比如我的jhead程序,我收到了消息No such file or directory.
我认为它可能是一个库问题,但是当我这样做时:
ldd jhead
Run Code Online (Sandbox Code Playgroud)
而不是它需要的库列表,我只是得到消息not a dynamic application.对于我使用的另一个旧的32位应用程序也是如此.
因此,似乎没有安装运行32位应用程序的一些非常重要的组件.但我怎么能确定它们是什么?
-arch arch
为指定的目标体系结构arch编译.允许值为'i386','x86_64','ppc'和'ppc64'.多个选项有效,并指示编译器生成"通用"二进制文件,包括使用-arch指定的每个体系结构的对象代码.仅当汇编程序和库可用于指定的每个体系结构时,此选项才有效.(仅限苹果)
那么这两个调用之间的区别是什么:
gcc -arch i386 program.c
和
gcc -m32 program.c
它是否只是-arch更强大,因为它更灵活,并且在指定多个拱时可以生成通用二进制文件?
32位和64位.NET(4)应用程序之间有什么区别?
通常,32位应用程序在64位计算机上运行时会出现问题,反之亦然.我知道我可以将整数声明为int32和int64(当然32位系统上的int64会产生问题).编程32 OR 64位或32位和64位兼容应用程序之间是否存在其他差异?
我遇到的问题是创建一种大整数库.我想让它既跨平台又尽可能快.这意味着我应该尝试使用系统本机支持的大型数据类型进行数学运算.
我实际上不想知道我是在编译32位还是64位系统; 我需要的是根据可用的最大值创建64位或32位或任何位整数的方法.我会使用sizeof来表现不同,具体取决于它是什么.
以下是一些可能的解决方案及其问题:
使用sizeof(void*):这给出了指向内存的指针的大小.有可能(尽管不太可能)系统可能具有更大的内存指针,而不是能够进行数学运算,反之亦然.
总是使用long:虽然在几个平台上确实长整数是4字节或8字节,具体取决于体系结构(我的系统就是这样一个例子),但是一些编译器甚至在64位系统上实现了4个字节的长整数.
总是使用long long:在许多32位系统上,这是一个64位整数,可能效率不高(虽然可能比我编写的代码更有效).这个问题的真正问题在于某些架构(例如为我的mp3播放器供电的架构)可能根本不支持它.
要强调的是,我的代码并不关心整数的实际大小一旦被选中(它依赖于sizeof()来处理大小重要的事情).我只是想让它选择整数的类型,这将导致我的代码最有效.
在64位操作系统上运行的32位程序是否可以使用超过4GB的内存(如果可用)?
我目前正在使用需要运行32位系统的旧代码.在这项工作中,我偶然发现了一个问题(出于学术兴趣),我想了解其原因.
如果对变量或表达式进行强制转换,似乎在32位C中从float转换为int的行为会有所不同.考虑该计划:
#include <stdio.h>
int main() {
int i,c1,c2;
float f1,f10;
for (i=0; i< 21; i++) {
f1 = 3+i*0.1;
f10 = f1*10.0;
c1 = (int)f10;
c2 = (int)(f1*10.0);
printf("%d, %d, %d, %11.9f, %11.9f\n",c1,c2,c1-c2,f10,f1*10.0);
}
}
Run Code Online (Sandbox Code Playgroud)
使用-m32修饰符直接在32位系统或64位系统上编译(使用gcc),程序的输出为:
30, 30, 0, 30.000000000 30.000000000
31, 30, 1, 31.000000000 30.999999046
32, 32, 0, 32.000000000 32.000000477
33, 32, 1, 33.000000000 32.999999523
34, 34, 0, 34.000000000 34.000000954
35, 35, 0, 35.000000000 35.000000000
36, 35, 1, 36.000000000 35.999999046
37, 37, 0, 37.000000000 37.000000477
38, …Run Code Online (Sandbox Code Playgroud)