gpt4 book ai didi

c++ - #ifdef x64 不适用于 Windows 资源文件

转载 作者:搜寻专家 更新时间:2023-10-31 01:26:24 24 4
gpt4 key购买 nike

最近,我一直在尝试让一个 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
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

这是我设置的预处理器定义。

Preprosseor for X64

Preprosseor for X86

对我做错的任何帮助都会很棒。

最佳答案

如果您检查 .RC 文件的属性,您会发现它没有继承用于 C++ 编译器的预处理器定义。

您必须明确地将 WIN64 定义添加到需要它的每个配置的 .RC 文件选项中。

关于c++ - #ifdef x64 不适用于 Windows 资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com