Visual C++ 以编程方式获取文件本身中的文件版本号



我知道我可以调用GetFileVersionInfo() Windows API来检索文件版本信息。

有没有更简单的方法可以从程序本身内部确定版本信息?

比如假设我正在为Foo.dll编写代码,在Foo.dll内部,我想支持一个版本函数,比如GetFooVersion(),它报告Foo.dll的版本号。

如果我必须使用 GetFileVersionInfo() ,那么我需要搜索链接的路径中的哪个Foo.dll(动态(,并应用 GetFileVersionInfo() . 这很乏味且容易出错。

目标Visual Studio版本是VS2012。

不幸的是,

没有GetFileVersionInfoByHandle,也没有GetFileVersionInfoFromModule。

您可以在自己的模块上使用FindResource等,但您必须自己解析版本信息GetFileVersionInfo因为并不总是检索原始资源数据(它可以转换为 Unicode 等(。

另一种选择是将版本 #defines 放在函数和 resource.rc 可以使用的 .h 文件中,这样您只需在版本更改时更新单个文件。

最新更新