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