У меня есть решение Visual Studio 2013, имеющее несколько файлов idl. В Visual Studio 2013 я использовал x64-битное командное окно для запуска msbuild для решения, и оно вызывает midl, который создает x64-битные заглушки из midl-кода. Я отчетливо вижу, как midl обрабатывает файлы IDL в 64-битной среде, как показано ниже:
64-битная обработка C: \ Program Files (x86) \ Windows Kits \ 10 \ include \ 10.0.17763.0 \ um \ oaidl.idl
В созданных файлах .c я также вижу следующий #define, который указывает, что он для 64-битных:
если определено (_M_AMD64)
Однако, когда я пытаюсь сделать то же самое в Visual Studio 2019, midl создает 32-битный код. Я не вижу 64-битную обработку midl. Также полученный код имеет следующие строки, предполагающие, что он для 32-битных:
если! Определено (_M_IA64) &&! Определено (_M_AMD64) &&! Определено ( ARM )
Если в той же командной строке я просто вызываю midl, передавая имя файла IDL без каких-либо параметров, он выдает 64-битный код.
Любые входные данные, почему midl не обрабатывает 64-битные файлы IDL при вызове из msbuild? Ценю любую помощь. Спасибо,