这几天在搞64位的windows编程,有时候需要知道所使用的dll或者lib是32 bit或者 64bit的 (64 bit的程序无法调用32 bit的lib或dll),最简单的方法是用windows下的工具dumpbin:
dumpbin /headers <filename>
开头几行就显示了这个文件的target machine,比如
PE signature found
File Type: DLL
FILE HEADER VALUES
14C machine (x86)
1 number of sections
45499E0A time date stamp Thu Nov 02 03:28:10 2006
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
2102 characteristics
Executable
32 bit word machine
DLL
OPTIONAL HEADER VALUES
10B magic # (PE32)
或者,你也可以用这段perl代码:
#!/usr/bin/perl
#
# usage: petype <exefile>
#
$exe = $ARGV[0];
open(EXE, $exe) or die "can't open $exe: $!";
binmode(EXE);
if (read(EXE, $doshdr, 68)) {
($magic,$skip,$offset)=unpack('a2a58l', $doshdr);
die("Not an executable") if ($magic ne 'MZ');
seek(EXE,$offset,SEEK_SET);
if (read(EXE, $pehdr, 6)){
($sig,$skip,$machine)=unpack('a2a2v', $pehdr);
die("No a PE Executable") if ($sig ne 'PE');
if ($machine == 0x014c){
print "i386\n";
}
elsif ($machine == 0x0200){
print "IA64\n";
}
elsif ($machine == 0x8664){
print "AMD64\n";
}
else{
printf("Unknown machine type 0x%lx\n", $machine);
}
}
}
close(EXE);
分享到:
相关推荐
虽然32位程序可以在64位windows下运行,但也有一些条件,要求EXE程度及所有dll动态库均统一为32位或64位,而不能混合运行。 作为软件开发人员,经常会碰到DLL动态库版本混乱问题,不同位数、不同版本的动态库可能...
在Delphi编程环境中,开发人员有时需要确定一个可执行文件(EXE)是32位还是64位。这是因为不同的操作系统版本和处理器架构对可执行文件有不同的要求。本篇文章将详细探讨如何使用Delphi来检查一个EXE文件是否为64位...
标题中的“dll文件32位64位检测工具”指的是用于检查动态链接库(dll)文件是否为32位或64位的软件工具。在32位和64位操作系统共存的时代,正确地识别和管理dll文件变得至关重要。这是因为32位应用程序和64位应用...
标题中的“dll文件32位64位检测工具”指的是用于检查动态链接库(dll)文件是否为32位或64位的软件工具。这些工具可以帮助开发者或系统管理员确定程序依赖的dll文件是否与运行的操作系统架构相匹配,从而避免出现...
在IT领域,了解一个DLL(动态链接库)或EXE(可执行文件)是32位还是64位至关重要,因为这关系到程序的兼容性和性能。32位和64位的区别主要在于它们的数据处理能力和内存访问范围。 首先,我们要明白32位和64位操作...
本程序能够判断可执行程序是Win32的还是AMD64的, 其原理是读取二进制,判断其中几个字节的数据
虽然32位程序可以在64位windows下运行,但也有一些条件,要求EXE程度及所有dll动态库均统一为32位或64位,而不能混合运行。 作为软件开发人员,经常会碰到DLL动态库版本混乱问题,不同位数、不同版本的动态库可能混...
"Window 系统检测dll文件是32位还是64位"这一主题,就是要探讨如何确定这些动态链接库文件的体系结构。 首先,Windows系统提供了内置的命令行工具——`dumpbin`,它是Visual Studio的一部分,可以用来查看DLL文件的...
"delphi 检测系统是xp,vista,win7还是32位,64位"这个标题正是指向了这样的需求。下面将详细解释如何在Delphi中实现这一功能。 首先,我们需要了解Delphi中获取操作系统信息的基本方法。这通常涉及到Windows API...
Windows在文件属性上一直没有显示exe、dll等PE格式文件是32位还是64位。这在很多情况下很有用,比如0xc000007b错误,很多时候就是因为32位、64位dll弄错引起的。本资源总结了10种检测方法,包括自己编写的部分代码、...
压缩包中的文件可能包括了Windows、Linux、macOS等多个平台的32位和64位版本,每个平台下可能进一步细分为不同的库文件,如dll(Windows)、so(Linux)或dylib(macOS)等。 总的来说,理解SWT的32位和64位版本至...
对于32位(win32)和64位(x64)版本的Dll文件,这是针对不同体系架构的Windows操作系统设计的。32位Dll适用于32位操作系统,而64位Dll则是为64位操作系统准备的。在使用时,确保选择与你的系统架构匹配的Dll文件,...
6. **64位版本的优势**:64位版的VLC相对于32位版,可以利用更多的系统内存,处理更大的媒体文件,提供更流畅的播放性能,尤其对于高清或长时间播放的视频更有优势。 在提供的压缩包中,"vlc-3.0.3-win64.exe"是VLC...
标题 "xuetr 二合一单文件 支持WIN10 32 64位 V1.52.rar" 暗示我们讨论的是一个名为 "xuetr" 的软件工具,它是一个专为Windows 10操作系统设计的驱动程序管理与检测工具。这个版本是V1.52,意味着它是经过多次更新和...
在开发过程中,有时我们需要根据目标系统的位数(32位或64位)来调整代码或选择不同的资源。在QT中检测系统是否为64位机主要涉及到对操作系统的理解和QT提供的系统信息类的使用。 首先,QT提供了一个名为`QSysInfo`...
描述中的“32位选32”、“64位选X64”意味着在选择驱动时,用户应根据自己的操作系统位数来选择正确的驱动文件进行安装。 在文件名称列表中,我们看到的"HP430 32位64位 驱动"可能是一个包含了所有所需驱动程序的...
本篇将详细介绍如何通过Delphi编程来检测PE文件头以判断其是32位还是64位。 首先,我们需要理解PE文件头的基本结构。PE文件由多个部分组成,包括DOS头、PE头(NT头)和节表等。其中,PE头的COFF(Common Object ...
SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别...包括Windows 32位和64位动态库
4. 平台检测与条件编译:使用预处理器宏如`_WIN64`或`__LP64__`来区分32位和64位代码,确保代码在不同平台上的正确编译。 5. API调用:许多Windows API在64位环境下有特殊版本或要求,例如,使用`...
然而,当你在64位操作系统上创建一个Python程序并试图在32位系统上运行时,由于二进制兼容性问题,可能会出现错误。这是因为编译的64位exe文件不能在32位环境中执行。反之亦然。为了解决这个问题,我们需要进行跨...