Я пытаюсь создать библиотеку декомпрессии DXT, найденную здесь, для DLL-библиотеки x64: http://www.matejtomcik.com/Public/KnowHow/DXTDecompression/#x64
Я выполнил следующие действия:
Созданпустой проект Windows DLL.
Щелкните правой кнопкой мыши проект >> Зависимости сборки >> Настройка сборки ... >> Включить masm
Добавленовсе файлы src asm / c / h к проекту
Щелкните правой кнопкой мыши на проекте >> Свойства >> Microsoft Macro Assembler >> Общие >> Добавлены определения препроцессора _WIN64
Установить цель сборки на 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 ...