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

在工程中,常常需要为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 目录下,直接覆盖替换。

方案二:


将C:\Windows\Microsoft.NET\Framework\v4.0.30319 里面的cvtres.exe拷贝到VS安装目录\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

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值