리소스 컴파일러는 includes 및 preprocessor 정의를 사용하면 문제가 없습니다. 예를 들어 Windows.h를 포함하는 것만으로는 충분하지 않습니다. 하지만 나는 을 생각할 수 없다. 왜이 리소스 컴파일러에 의해 소비되는 파일에서 필요한 이유 일까? 경고의 원인을 포함하지 않는 헤더 파일을 사용하고 필요한 것을 정의하십시오. 예를 들어 우리가 여기에서 사용하는 일반적인 버전이 작업을 수행하고 잘 작동 : 여기 가능성부터
#include <winver.h>
#define stringize(x) stringizei(x)
#define stringizei(x) #x
#ifdef VRC_INCLUDE
#include stringize(VRC_INCLUDE)
#endif
#ifdef _WIN32
LANGUAGE 0x9,0x1
#pragma code_page(1252)
#endif
1 VERSIONINFO
FILEVERSION VRC_FILEVERSION
PRODUCTVERSION VRC_PRODUCTVERSION
FILEFLAGSMASK 0x1L
FILEFLAGS VS_FF_DEBUG
FILEOS VOS__WINDOWS32
FILETYPE VRC_FILETYPE
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", stringize(VRC_COMPANYNAME)
VALUE "FileDescription", stringize(VRC_FILEDESCRIPTION)
VALUE "FileVersion", stringize(VRC_FILEVERSION)
VALUE "LegalCopyright", stringize(VRC_COPYRIGHT)
VALUE "InternalName", stringize(VRC_ORIGINALFILENAME)
VALUE "OriginalFilename", stringize(VRC_ORIGINALFILENAME)
VALUE "ProductName", stringize(VRC_PRODUCTNAME)
VALUE "ProductVersion", stringize(VRC_PRODUCTVERSION)
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
거의 무제한 : 그것은 다음과 같이 보입니다로 파일 .RC 단일 마스터가있다. 모든 정의
rc /d VRC_COMPANYNAME=mycompany ... version.rc
또는 이들의 조합을
rc /d VRC_INCLUDE=$(VersionMainInclude) ... version.rc
또는 공급 : 어느 VRC_...
모든 정의를 포함하는 포함하는 파일의 전체 경로를 정의 VRC_INCLUDE
.
- 가있어 모든 프로젝트가 version.h가의 #define을 써서 짧은 VRC_FILEDESCRIPTION 및 VRC_FILEVERSION
- 를했습니다
여기서 나는 현재 자식과 버전이 모든 프로젝트에 대해 뭘하는지, 당신에게 가능성을 표시하려면 프로젝트가 사전 빌드 이벤트
은 MSBuild의 사전 빌드 이벤트가 흥미로운 물건을 담당에 version.res를 생성하는 .targets 파일이 포함
- VRC_COMPANYNAME/VRC_COPYRIGHT을/#define을 써서 version.h가 마스터 ... : 나는 t이, 다른 두를 결합 새 임시 헤더 파일을 만듭니다 짧은 자식 SHA와 현재의 데이터를 소요하고
Foo Dll [12e454re 30/07/2013]
자네 말이 맞아처럼 보이는 끝나는 있도록 파일의 설명 문자열에 있음을 추가, 나는 version.h가 판도라 상자를 여는 다른 .h를 포함하고 있다는 것을 놓쳤다. – sorin