【PE】Windows平台下为可执行文件或动态库dll添加版本信息

###Date: 2017/9/22
###Author : SoaringLee



  平常我们可以看到在Windows可执行文件中,右键属性中含有文件版本,文件名称和版本等信息,本文讲述怎么添加这些信息。


方法一:VS工程中建立资源文件,编译即可

     这种方法比较简单,是借助VS工程,文件版本的信息其实是通过资源文件编译进去的。

方法二:MinGW或者Cygwin环境下为dll或exe添加版本信息


1、打开cmd,输入:

call "%VS120COMNTOOLS%../../VC/vcvarsall.bat" 
call "E:\ProfessionalSoftware\MinGW\msys\1.0\msys.bat" 
启动VS2010编译环境和MinGW环境,这里是为了使用命令windres和rc命令。


2、创建一个test.c文件:

#include "stdio.h"
int add(int a, int b)
{
	return a + b;
}

int main(int argc, char** argv)
{
	printf("********************");
}

3、创建资源文件Res.rc文件:
1 VERSIONINFO
FILEVERSION    0,1,22,33
PRODUCTVERSION 1,0,0,0
FILEFLAGS 0x1L
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x1L
BEGIN
   BLOCK "StringFileInfo"
   BEGIN 
     BLOCK "080904E4"
     BEGIN
	VALUE "CompanyName", "My Company Name"
	VALUE "FileDescription", "My excellent application"
	VALUE "FileVersion", "6000"
	VALUE "InternalName", "my_app"
	VALUE "LegalCopyright", "My Name"
	VALUE "OriginalFilename", "my_app.exe"
	VALUE "ProductName", "My App"
	VALUE "ProductVersion", "6000"
     END
   END
   BLOCK "VarFileInfo"
   BEGIN
      VALUE "Translation", 0x809, 1252
   END

4、编译链接,将资源文件rc转换成res文件,然后链接到dll或exe中
gcc -c test.c -o test.o
windres Res.rc -O coff -o obj.res
gcc -o test test.o obj.res
或者:
cl -c test.c
windres Res.rc -O coff -o obj.res
link test.obj obj.res
另外一种方法就是采用rc命令将res文件转换成rc文件。
cl -DWIN64 -c obj.c -Foobj
rc -DWIN64 -fo obj.res obj.rc 
link obj.obj obj.res

好的,现在就可以右键属性查看可执行文件的版本信息了。



猜你喜欢

转载自blog.csdn.net/soaringlee_fighting/article/details/78067493