我正在尝试将在此处找到的DXT解压缩库构建为x64 DLL: http://www.matejtomcik.com/Public/KnowHow/DXTDecompression/#x64
我已按照以下步骤操作:
创建了一个空的Windows DLL项目。
右键单击项目>> Build Dependencies >> Build Customization ... >>启用masm
将所有src asm / c / h文件添加到项目中
右键单击项目>>属性>> Microsoft宏汇编程序>>常规>>添加了_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吗?
x64汇编器(ML64)不接受许多较旧的x86 指令。不允许所有CPU模型指令,因为它们不 对于64位代码有意义。而且,该模型现在一直处于FLAT状态 因为我们不需要担心分段内存。另外,要警告 当前PROC / INVOKE指令不会自动 生成展开指令...
答案 0 :(得分:0)
确定,所以找到了它: https://msdn.microsoft.com/en-us/library/ss9fh0d6.aspx
备注
.MASM不用于x64(ml64.exe)。
真的吗?在备注部分... MS可以添加一个描述性的错误消息。