Dav*_*ley 4 c++ winapi conditional-compilation resource-files visual-studio
最近,我一直在尝试让 DLL 根据编译的平台具有不同的 InternalName 和 OriginalFilename。如果 DLL 设置为 Release|x64,则它应该有一个名称,如果设置为 Release|x86,则它应该有另一个名称。我以前只有 2 个不同的项目,但觉得创建一个 ifdef 更容易。问题是无论我做什么,InternalName 和 OriginalFilename 最终总是 x86 名称。
下面是我存储 ifdef 的 Resource.h 文件的一个小片段。
下面的代码片段来自定义该详细信息的 dlls .rc 文件。
#ifdef WIN64
// 64 bit windows
#define DLLNAME "MyDLL.dll"
#else
// 32 bit windows
#define DLLNAME "MyDLL_WIN32.dll"
#endif // _WIN64 or _WIN32
Run Code Online (Sandbox Code Playgroud)
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Software Company Inc."
VALUE "FileDescription", "Some DLL"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", DLLNAME
VALUE "LegalCopyright", "Copyright (C) 2019. All rights reserved."
VALUE "OriginalFilename", DLLNAME
VALUE "ProductName", "Some DLL"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
Run Code Online (Sandbox Code Playgroud)
这是我设置的预处理器定义。
对我做错的事情的任何帮助都会很棒。