gpt4 book ai didi

c++ - 在代码中读取 FILEVERSION 值

转载 作者:行者123 更新时间:2023-11-28 01:33:06 25 4
gpt4 key购买 nike

我用 C++ 构建的 dll 有一个包含以下内容的 .rc 文件:

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,8,7
PRODUCTVERSION 1,0,8,7

我希望读取 FILEVERSION 值来登录我的代码。我能怎么做?我读了一些东西,但所有帖子都是相对于阅读其他 dll 或 exe,我需要阅读我当前的 dll

谢谢

最佳答案

使用 GetFileVersionInfo()VerQueryValue()是读取任何文件版本数据的安全官方 方式。 DLL可以通过调用GetModuleFileName()得到自己的路径+文件名与 HINSTANCE提供给其DllMain()入口点。

话虽如此,DLL 使用(Find|Load|Lock)Resource() 直接从自己的版本资源中读取版本数据效率更高而不是 GetFileVersionInfo() .但是,这样做有一些注意事项:

  • 这不是 Microsoft 官方支持的方法。

  • LockResouce()获得的内存指针cannot be passed to VerQueryValue() .您必须分配资源 block 的拷贝,然后您可以将拷贝传递给VerQueryValue() .

  • 但是,您可以使用VerQueryValue()复制 资源 block 中安全查询的唯一版本数据|是根VS_FIXEDFILEINFO结构,足以获得 FileVersionProductVersion领域。查询任何本地化版本数据需要通常由 GetFileVersionInfo() 执行的修复,甚至 VerQueryValue()本身与 GetFileVersionInfo() 协调.

StackOverflow 上有几个答案解释了如何使用这种方法,其中一些有代码片段,包括:

https://stackoverflow.com/a/48577200/65863

https://stackoverflow.com/a/13942403/65863

关于c++ - 在代码中读取 FILEVERSION 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50729612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com