如果我不使用MFC,是否需要afxres.h?如何从.RC脚本中删除它?

时间:2009-10-15 22:51:38

标签: windows resources versioninfo afx rc.exe

我不知道RC脚本。

我想将产品版本,文件版本等元数据包含到我正在构建的DLL中。我正在使用.rc文件来做到这一点。构建是由makefile驱动的。我跟着我发现的.rc scrpit示例。

模板.rc文件包含afxres.h,但我认为我不需要它。但是,如果我删除它,我会收到一堆编译错误。

基本的非MFC RC脚本是什么样的?我可以删除所有这样的东西:

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

....

2 个答案:

答案 0 :(得分:8)

尝试在没有MFC的情况下编译时遇到了类似的问题。 Cheeso的解决方案不适合我。

所有编译好的,我在构建过程中没有看到任何错误/警告。在我的资源文件中定义的图标在'windows explorer'中正确显示。但是,版本数据不可用。 (右键单击可执行文件和选择属性时可以看到。在这种情况下,没有“版本”选项卡。)

为了使其正常工作,我必须在.rc文件的顶部添加以下include:

#include <windows.h>

通过此更改,版本选项卡将显示在可执行文件的属性中。此外,.NET System.Diagnostics.FileVersionInfo类现在能够获取版本信息,而这在以前不起作用。

默认情况下,“stdafx.h”包含“windows.h”。我不确定为什么需要windows.h,但它似乎在我的情况下有所不同。

编辑:添加了一些更具体的信息,以回应Cheeso。

答案 1 :(得分:3)

我的回答:
不,我不需要所有的废话。这是一个适用于VERSIONINFO的RC脚本。

#define VER_FILEVERSION          1,2,3,4
#define VER_FILEVERSION_STR      "1.2.3.4"
#define VER_PRODUCTVERSION       1,2,0,0
#define VER_PRODUCTVERSION_STR   "1.2.0.0"

// -------------------------------------------------------

VS_VERSION_INFO VERSIONINFO
 FILEVERSION            VER_FILEVERSION
 PRODUCTVERSION         VER_PRODUCTVERSION
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
    BLOCK "040904b0"
    BEGIN
    VALUE "CompanyName",      "Company X"
    VALUE "FileDescription",  "Description Goes Here"
    VALUE "InternalName",     "NotSure"
    VALUE "LegalCopyright",   "Copyright (C) 2009 Your Name Here"
    VALUE "OriginalFilename", "DllName.dll"
    VALUE "ProductName",      "Product Title"
    VALUE "FileVersion",      VER_FILEVERSION_STR
    VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
    END
END
BLOCK "VarFileInfo"
BEGIN
    VALUE "Translation", 0x409, 1200
END
END

用以下内容表示:

$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc