MASM 不组装所有文件



我在 Visual Studio 2022 中有一个C++项目,该项目创建了一个调用 MASM 汇编程序创建的函数的.dll。但是,汇编程序 - ml64 - 不考虑单个.inc文件,因此失败并出现error LNK2019: unresolved external symbol错误。

我有一个文件,Core.asm链接到V.inc哪个又链接到V_Constants.inc。这些文件使用include链接在一起,所以Core.asminclude V.inc,而include V_Constants.inc又有。

最初这很有效,但是当我以微不足道的方式更改Core.asm时,一切都停止了。我可以清空文件以排除任何奇怪的语法错误,我得到相同的结果。

更改输出以显示它正在做什么(尽可能多地,通过删除/nologo 命令行)表明汇编程序缺少V.inc,但包括其他所有内容。

什么可以阻止ml64.exe忽略文件?是否可以强制组装?

有趣的是,如果我重命名V.inc则会出现cannot open file: v.inc错误。所以它知道包含这个文件,但它不想组装它。

看起来 Visual Studio 2022 中的某些内容将.vcxproj文件中 xml 中的包含元素从MASM更改为text。我不知道为什么。

这就是我所拥有的,请注意V.inc的错误元素.

<ItemGroup>
<MASM Include="Core.asm" />
</ItemGroup>
<ItemGroup>
<MASM Include="V_Constants.inc" />
</ItemGroup>
<ItemGroup>
<Text Include="V.inc" />
</ItemGroup>

Edit:所以事实证明最初的问题是主.asm文件需要包含外部文件。这些不能作为MASM元素包含在项目文件中。

此外,我在这些.inc文件的末尾有END指令,这是不正确的,因为它会停止处理。(我添加了这些,因为当文件具有MASM元素时,汇编程序会抱怨没有END。这是一个大红鲱鱼,把我引向错误的道路。

tl;dr:包含的文件应标记为Text,并且不要为这些文件添加END


Edit 2:但是,将这些文件标记为文本会阻止在更改项目时重新编译项目。

最新更新