这几天在搞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动态库版本混乱问题,不同位数、不同版本的动态库可能...
本程序能够判断可执行程序是Win32的还是AMD64的, 其原理是读取二进制,判断其中几个字节的数据
虽然32位程序可以在64位windows下运行,但也有一些条件,要求EXE程度及所有dll动态库均统一为32位或64位,而不能混合运行。 作为软件开发人员,经常会碰到DLL动态库版本混乱问题,不同位数、不同版本的动态库可能混...
Windows在文件属性上一直没有显示exe、dll等PE格式文件是32位还是64位。这在很多情况下很有用,比如0xc000007b错误,很多时候就是因为32位、64位dll弄错引起的。本资源总结了10种检测方法,包括自己编写的部分代码、...
用于检测Windows 系统下的dll文件到底是32位的还是64位的
SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别...包括Windows 32位和64位动态库
exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏...
Dll 文件检测修复支持win732/64位,XP32/64位
。。。
。。。
xe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏里...
exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于...1.这个exe4j是64位版本,注册机同样适用于32位版; 2.exe4j打包出来的exe文件执行时照样需要机器已经安装jre。
第二步:然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。 如果您不知道是X86还是X64,您可以点此链接检测。 第三步:根据软件情况选择文件版本。此步骤比较复杂,如果是Windows的dll文件, ...
因为MSASN动态链接库的冲突,Windows7不再支持Netmeeting,鉴于Vista和Windows7内核的同源性。特别修改了一下Netmeeting内核程序,...在win7_64机器先安装nm30.exe,再把cracks下文件复制到netmeeting安装目录下覆盖。
适用系统:Vista/Windows 2008 Server/Windows7/Windows 8 Release Preview Build 8400 (64位) 支持PE系统 目前版本主要功能: 1. 所有进程的枚举(包括内核中隐藏的进程) 2. 所有文件的枚举(包括内核中隐藏的...
AIDA64目前支持所有的32位和64位Microsoft Windows操作系统,包括对Windows 7和Windows Server 2008 R2的兼容。AIDA64已取代EVEREST。 AIDA64 Extreme Edition 软件特点 CPU,内存和磁盘基准 AIDA64 实现了一个64位...
在 64 位 Windows 上用于 32 位 SageThumbs 的插件”。 因此,如果没有安装 XnView,则可以手动创建此文件夹并解压缩插件。 只是不要忘记,插件和 SageThumbs 需要相同的“位容量”。 故障排除 要修复不需要的 ...
PC Hunter 是在原 XueTr 的基础上重新开发而来,XueTr 只支持 32 位操作系统,而 PC Hunter 不仅支持 32 位的 2000、XP、2003、Vista、2008、Win7、Win8,还支持 64 位的 Win7、Win8 系统,那么针对64位的 Windows 7...