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

来源:互联网 发布:淘宝店"开名"假货 编辑:程序博客网 时间:2024/06/03 22:48

在工程中,常常需要为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 VERSIONINFOFILEVERSION     1,0,0,0PRODUCTVERSION  1,0,0,0FILEFLAGS 0x1LFILEOS 0x40004LFILETYPE 0x1LFILESUBTYPE 0x0LBEGIN  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  ENDEND


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.owindres obj.rc -O coff -o obj.resgcc -o obj obj.o obj.res

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


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

cl -c obj.cwindres obj.rc -O coff -o obj.reslink obj.obj obj.res

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


原创粉丝点击