【问题标题】:Obtain DLL version in C++获取 C++ 中的 DLL 版本
【发布时间】:2015-07-01 22:53:57
【问题描述】:

有人能指出一个函数来简单地使用 C++ 代码从 DLL 文件中获取版本号吗?我知道 Windows 有这些信息,因为我可以右键单击文件、查看属性并查看版本。我只需要在 C++ 中以编程方式检索版本。

【问题讨论】:

  • 你应该向我们展示的想法!!

标签: c++ version


【解决方案1】:

您想使用GetFileVersionInfo WinAPI 函数。下面是一个稍微修改过的工作example 的使用。它将在详细信息页面上打印版本。您只需使用 ie 包含 vector 和 windows.h 的标头,并包含 version.lib。编译指示:#pragma comment(lib, "version.lib")

LPTSTR lpszFilePath = L"d:\\AcroRd32.dll";

DWORD dwDummy;
DWORD dwFVISize = GetFileVersionInfoSize(lpszFilePath, &dwDummy);

std::vector<BYTE> versionInfoVec(dwFVISize);

GetFileVersionInfo(lpszFilePath, 0, dwFVISize, versionInfoVec.data());

UINT uLen;
VS_FIXEDFILEINFO *lpFfi;

VerQueryValue(versionInfoVec.data(), _T("\\"), (LPVOID *)&lpFfi, &uLen);

DWORD dwFileVersionMS = lpFfi->dwFileVersionMS;
DWORD dwFileVersionLS = lpFfi->dwFileVersionLS;

DWORD dwLeftMost = HIWORD(dwFileVersionMS);
DWORD dwSecondLeft = LOWORD(dwFileVersionMS);
DWORD dwSecondRight = HIWORD(dwFileVersionLS);
DWORD dwRightMost = LOWORD(dwFileVersionLS);

std::cout << dwLeftMost << "." << dwSecondLeft << "."
    << dwSecondRight << "." << dwRightMost << std::endl;

【讨论】:

  • 谢谢。这非常有帮助,并为我提供了我需要的信息。不幸的是我没有
  • 有足够的声誉来投票你的答案,但我还是感谢你
  • 不要忘记对每个 API 调用进行错误检查。此外,一些 DLL 会导出 DllGetVersion() 函数,因此您可以考虑在使用 GetFileVersionInfo() 之前检查它。
猜你喜欢
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 2011-08-26
相关资源
最近更新 更多