在mingw编译环境下为dll添加版本信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/listener51/article/details/76944161

在工程中,常常需要为dll添加版本信息,如果有vs工程比较好办,但是没有vs,在Mingw下也不难,通过对网上资料的搜集及验证,特分享。


1、假设有obj.c文件,内容如:

#include<stdio.h>
int add(int a,int b)
{
	return a+b;
}
void main()
{
	printf("******\n");
}

2、为dll添加版本信息,其实就是利用了资源文件,如obj.rc

1 VERSIONINFO
FILEVERSION     1,0,0,0
PRODUCTVERSION  1,0,0,0
FILEFLAGS 0x1L
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
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
END


3、怎么用?

(1)、打开cmd ,输入:

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
call "C:\MinGW\msys\1.0\msys.bat"

(2)、cd 到obj.c obj.rc所在目录

      执行:

gcc -c obj.c -o obj.o
windres obj.rc -O coff -o obj.res
gcc -o obj obj.o obj.res

(3)、然后可以右键看obj的版本信息了


另:也可以使用cl.exe  link.exe

cl -c obj.c
windres obj.rc -O coff -o obj.res
link obj.obj obj.res

  注意:上述描述的是针对编译32位的dll,编译64位的dll请参考下面的代码:windres改为rc,是由于windres跟你安装的Mingw版本有关,如果mingw是32位的则windres也是32位的,不易编64位库,因此改成rc通用些。
cl -DWIN64 -c obj.c -Foobj
rc -DWIN64 -fo obj.res obj.rc 
link obj.obj obj.res

  • LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

  方案一:(这个方法比较好,在用qt运行时出现问题也能解决)

复制 C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7601.17514_none_ba1c770af0b2031b 目录下的 cvtres.exe 到C:\Program Files\Microsoft Visual Studio 10.0\VC\bin 目录下,直接覆盖替换。



 

参考网址:http://www.cnblogs.com/newpanderking/p/4003228.html

参考网址:http://blog.sina.com.cn/s/blog_68d0c6c30100kzv6.html

参考网址:http://blog.163.com/yuyang_tech/blog/static/2160500832013118112049372/

参考网址:http://blog.csdn.net/cruise_h/article/details/29218407


猜你喜欢

转载自blog.csdn.net/listener51/article/details/76944161