【问题标题】:Visual Studio C++ Resource File gets altered after changing DialogVisual Studio C++ 资源文件在更改对话框后被更改
【发布时间】:2021-08-08 16:23:30
【问题描述】:

我的项目中的 .rc 文件有一个奇怪的问题。

我设置了一些变量来在我的对话框中显示版本号。

        BEGIN
            VALUE "CompanyName", "Big company"
            VALUE "FileDescription", "nice software"
            VALUE "FileVersion", VERSION_NUMBER
            VALUE "InternalName", "some name"
            VALUE "LegalCopyright", "some more strings"
            VALUE "OriginalFilename", "some.exe"
            VALUE "ProductName", "some name"
            VALUE "ProductVersion", VERSION_NUMBER
        END

问题是,当我在 Visual Studio 中更改任何对话框时,即使只是移动一个按钮,也会更改变量。在这种情况下:VERSION_NUMBER 到“004.005.0.0”。这还不错,我的意思是在编译时它最终应该填充有标题中定义的正确数据:

#define MAJOR 004
#define MINOR 005
#define RELEASE 0
#define BUILD 0
#define VERSION_NUMBER STRINGIFY(MAJOR) "." STRINGIFY(MINOR) "." STRINGIFY(RELEASE) "." STRINGIFY(BUILD)
#define VERSION_NUMBER_DWORD MAJOR,MINOR,RELEASE,BUILD

#endif

但不是在我编辑对话框时。

现在我们在构建服务器上有一个 powershell 脚本,它会在编译之前搜索这些字符串并重置它们,但这并不是最优雅的解决方案。有没有办法告诉 Visual Studio 在编译前停止更改这些变量?

【问题讨论】:

  • 维护且不希望 IDE 向导接触的资源不应进入主 .rc 文件,而应置于主文件包含的单独资源文件中一。传统上给出了.rc2 扩展名,例如参见here
  • 谢谢,对我帮助很大^^

标签: c++ visual-studio mfc dialog c++17


【解决方案1】:

如原帖评论中所述,典型的方法是在 rc2 文件中添加行。

作为替代选项,您可以使用 TEXTINCLUDE 部分添加只读定义并包含其他头文件。这些部分由编辑器在重建文件时使用。

2 TEXTINCLUDE DISCARDABLE
BEGIN
    "#ifndef APSTUDIO_INVOKED\r\n"
    "#include ""targetver.h""\r\n"
    "#endif\r\n"
    "#include ""afxres.h""\r\n"
    "#include ""verrsrc.h""\r\n"
    "#define MAJOR 004\r\n"
    "#define MINOR 005\r\n"
    "#define RELEASE 0\r\n"
    "#define BUILD 0\r\n"
    "#define VERSION_NUMBER STRINGIFY(MAJOR) ""."" STRINGIFY(MINOR) "".""    STRINGIFY(RELEASE) ""."" STRINGIFY(BUILD)\r\n"
    "#define VERSION_NUMBER_DWORD MAJOR,MINOR,RELEASE,BUILD\r\n"
    "\0"
END

Microsoft: How Visual C++ Manages Set Includes Information

【讨论】:

猜你喜欢
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多