Попытка скомпилировать сборку x64 в VS2017 ml64 дает странную синтаксическую ошибку - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь создать библиотеку декомпрессии DXT, найденную здесь, для DLL-библиотеки x64: http://www.matejtomcik.com/Public/KnowHow/DXTDecompression/#x64

Я выполнил следующие действия:

  1. Созданпустой проект Windows DLL.

  2. Щелкните правой кнопкой мыши проект >> Зависимости сборки >> Настройка сборки ... >> Включить masm

  3. Добавленовсе файлы src asm / c / h к проекту

  4. Щелкните правой кнопкой мыши на проекте >> Свойства >> Microsoft Macro Assembler >> Общие >> Добавлены определения препроцессора _WIN64

  5. Установить цель сборки на Release x64

Теперь, когда я пытаюсь скомпилировать проект, он попадает в самый первый файл asm:

ifndef _WIN64
.model FLAT, C
endif
.data
EXTERNDEF aAlphaDxt3Lookup:DWORD
aAlphaDxt3Lookup DD 0h,011000000h,022000000h,033000000h,044000000h,055000000h,066000000h,077000000h
DD 088000000h,099000000h,0aa000000h,0bb000000h,0cc000000h,0dd000000h,0ee000000h,0ff000000h
end

и выдает эту ошибку:

Синтаксическая ошибка A2008 :.(строка 2)

Я предполагаю, что пропустил какой-то шаг настройки или у меня неправильная опция где-то в VS.Я попытался переключить пару настроек, добавив .586 и т. Д. Безрезультатно.

Редактировать: Уточнение вопроса: Removing .model FLAT, C исправляет синтаксическую ошибку, и файл asm компилируется правильно.Ml64 все еще использует .mode?

Отсюда: https://social.msdn.microsoft.com/Forums/vstudio/en-US/f4c79dbc-7048-4513-bd63-70352186512f/64bit-compile-error-language-type-must-be-specified?forum=vclanguage

ассемблер x64 (ML64) не принимает многие из более старых директив x86.Все директивы модели процессора недопустимы, так как они не имеют смысла для 64-битного кода.Кроме того, модель теперь плоская, так как нам не нужно беспокоиться о сегментированной памяти.Кроме того, имейте в виду, что директивы PROC / INVOKE в настоящее время не генерируют автоматически директивы unwind ...

1 Ответ

0 голосов
/ 22 сентября 2018

ОК, поэтому нашел его: https://msdn.microsoft.com/en-us/library/ss9fh0d6.aspx

Примечания

.MODEL не используется в MASM для x64 (ml64.exe).

Правда?в разделе замечаний ... приятно MS добавить описательное сообщение об ошибке.

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