mingw 컴파일 환경에서 dll에 버전 정보 추가

프로젝트에서 dll에 버전 정보를 추가해야 하기 때문에 vs 프로젝트가 있으면 비교적 쉽지만 vs가 없으면 Mingw에서도 어렵지 않습니다. 인터넷 자료에 대한 수집과 검증을 통해 특별히 공유합니다.
 
1. 가설에 obj가 있다.c 파일, 내용은 다음과 같습니다.
 
#include
int add(int a,int b)
{
	return a+b;
}
void main()
{
	printf("******
"); }

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로 전환하는 동안 실패: 잘못된 파일 또는 손상
  • 방안1: (이 방법이 비교적 좋으며 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    ,      。

    시나리오 2:
    
     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

    좋은 웹페이지 즐겨찾기