右键单击DLL中的版本资源不可见

Dav*_*ick 10 c++ dll resources visual-c++-2008-express visual-studio-2008

我正在尝试做一些在常规MSVC中很容易做的事情,但在VC++ Express中不容易支持.

VC++ Express中没有资源编辑器.所以我在我的DLL项目中添加了一个名为version.rc的文件.该文件具有以下内容,该内容由资源编译器编译并添加到最终的DLL中.使用reshacker可以在DLL中查看此资源,但在Windows资源管理器中右键单击DLL时则不行.

我的RC文件中缺少什么来使其在右键单击时显示?

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "something Application"
            VALUE "FileVersion", "1, 0, 0, 1"
            VALUE "InternalName", "something"
            VALUE "LegalCopyright", "Copyright (C) 2008 Somebody"
            VALUE "OriginalFilename", "something.exe"
            VALUE "ProductName", "something Application"
            VALUE "ProductVersion", "1, 0, 0, 1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
Run Code Online (Sandbox Code Playgroud)

Dav*_*ick 15

我能够看到(使用reshacker)右键单击时出现的资源和资源之间的差异,这就是资源的名称.所以我把VS_VERSION_INFO改为1; 现在,右键单击可见资源.

1 VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "something Application"
            VALUE "FileVersion", "1, 0, 0, 1"
            VALUE "InternalName", "something"
            VALUE "LegalCopyright", "Copyright (C) 2008 Somebody"
            VALUE "OriginalFilename", "something.exe"
            VALUE "ProductName", "something Application"
            VALUE "ProductVersion", "1, 0, 0, 1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
Run Code Online (Sandbox Code Playgroud)

  • 很棒!我刚刚碰到了同样的事情.据推测,VS_VERSION_INFO符号是在您的(或我的)资源脚本中未包含的其他位置定义的. (2认同)

MrZ*_*bra 10

正确的解决方案是添加到.rc文件的顶部:

#include <windows.h>
Run Code Online (Sandbox Code Playgroud)

  • `#include <winres.h>`就足够了 (5认同)