如何确定一个DLL文件是32位的还是64位的
请教各位达人一个问题:
有没有什么方法可以确定一个DLL文件是否是32位或64位。
最好不要用 LoadLibrary 的加载成功与否来判断啊!
[解决办法]
从PE文件格式入手。检查 IMAGE_FILE_HEADER 中的machine成员即可。
[解决办法]
好事做到底,直接上代码。
#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("δ֪");}