首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么确定一个DLL文件是32位的还是64位的

2012-09-25 
如何确定一个DLL文件是32位的还是64位的请教各位达人一个问题:有没有什么方法可以确定一个DLL文件是否是32

如何确定一个DLL文件是32位的还是64位的
请教各位达人一个问题:

有没有什么方法可以确定一个DLL文件是否是32位或64位。

最好不要用 LoadLibrary 的加载成功与否来判断啊!

[解决办法]
从PE文件格式入手。检查 IMAGE_FILE_HEADER 中的machine成员即可。
[解决办法]
好事做到底,直接上代码。

C/C++ code
#include <stdio.h>int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName){    IMAGE_DOS_HEADER idh;    FILE *f = fopen(lpFileName, "rb");    fread(&idh, sizeof(idh), 1, f);    IMAGE_FILE_HEADER ifh;    fseek(f, idh.e_lfanew + 4, SEEK_SET);    fread(&ifh, sizeof(ifh), 1, f);    fclose(f);    return ifh.Machine;}void __fastcall TForm1::FormCreate(TObject *Sender){    int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");    if (n == 0x014C) ShowMessage("x86");    else if (n == 0x0200) ShowMessage("IA64");    else if (n == 0x8664) ShowMessage("x64");    else ShowMessage("δ֪");} 

热点排行