#ifdef x64 не работает для файла ресурсов Windows - PullRequest
2 голосов
/ 01 апреля 2019

Недавно я пытался заставить DLL иметь разные InternalName и OriginalFilename в зависимости от того, на какой платформе она скомпилирована.Если для DLL задано Release | x64, у нее должно быть одно имя, а если для Release | x86 - другое.У меня просто было два разных проекта, но я чувствовал, что проще создать ifdef.Проблема не имеет значения, что я делаю, InternalName и OriginalFilename ВСЕГДА заканчивают тем, что являются именем x86.

Ниже у меня есть небольшой фрагмент из моего файла Resource.h, где я храню ifdef.

Ниже приведен фрагмент из файла dll .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

Любая помощь в том, что я делаю неправильно, будет отличной.

1 Ответ

3 голосов
/ 01 апреля 2019

Если вы проверите свойства файла .RC, вы увидите, что он не наследует определения препроцессора, используемые для компилятора C ++.

Вам придется явно добавить определение WIN64 в параметры файла .RC для каждой конфигурации, которая в этом нуждается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...