首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C++中获取DLL文件的版本信息

在C++中获取DLL文件的版本信息,可以使用Windows API函数GetFileVersionInfoVerQueryValue。以下是一个简单的示例代码:

代码语言:cpp
复制
#include<iostream>
#include<string>
#include<windows.h>
#include <winver.h>

using namespace std;

bool GetDLLVersionInfo(const string& dllPath, string& versionInfo)
{
    DWORD dwHandle;
    UINT dwLen;
    LPVOID lpData;
    VS_FIXEDFILEINFO* pFileInfo;

    // 获取文件版本信息
    dwLen = GetFileVersionInfoSize(dllPath.c_str(), &dwHandle);
    if (dwLen == 0)
    {
        cout << "GetFileVersionInfoSize failed: "<< GetLastError()<< endl;
        return false;
    }

    lpData = malloc(dwLen);
    if (!GetFileVersionInfo(dllPath.c_str(), dwHandle, dwLen, lpData))
    {
        cout << "GetFileVersionInfo failed: "<< GetLastError()<< endl;
        free(lpData);
        return false;
    }

    // 获取VS_FIXEDFILEINFO结构体
    if (!VerQueryValue(lpData, "\\", (LPVOID*)&pFileInfo, &dwLen))
    {
        cout << "VerQueryValue failed: "<< GetLastError()<< endl;
        free(lpData);
        return false;
    }

    // 获取文件版本信息
    int major = (pFileInfo->dwFileVersionMS >> 16) & 0xFFFF;
    int minor = (pFileInfo->dwFileVersionMS >> 0) & 0xFFFF;
    int build = (pFileInfo->dwFileVersionLS >> 16) & 0xFFFF;
    int revision = (pFileInfo->dwFileVersionLS >> 0) & 0xFFFF;

    // 格式化版本信息字符串
    versionInfo = to_string(major) + "." + to_string(minor) + "." + to_string(build) + "." + to_string(revision);

    free(lpData);
    return true;
}

int main()
{
    string dllPath = "C:\\path\\to\\your\\dll.dll";
    string versionInfo;

    if (GetDLLVersionInfo(dllPath, versionInfo))
    {
        cout << "DLL version: "<< versionInfo<< endl;
    }
    else
    {
        cout << "Failed to get DLL version."<< endl;
    }

    return 0;
}

该示例代码首先调用GetFileVersionInfoSizeGetFileVersionInfo函数获取DLL文件的版本信息,然后调用VerQueryValue函数获取VS_FIXEDFILEINFO结构体,最后根据结构体中的信息格式化版本信息字符串。

注意:在使用该示例代码时,需要将dllPath变量设置为目标DLL文件的路径。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券