将Visual Studio 2017中的Assembly和C ++与命令行和输出相结合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Visual Studio 2017中的Assembly和C ++与命令行和输出相结合相关的知识,希望对你有一定的参考价值。

我正在尝试将这些语言结合起来用于测试目的。有没有人知道为什么,在构建项目后,当.asm文件在源文件夹中时,无法找到clear函数。下面显示的以下图像应该解释我的要求,我将进一步编辑。

Visual Studio with an assembly and C++ file

this last photo shows the properties from my .asm file

.586              ;Target processor.  Use instructions for Pentium class machines
.MODEL FLAT, C    ;Use the flat memory model. Use C calling conventions
.STACK            ;Define a stack segment of 1KB (Not required for this example)
.DATA             ;Create a near data segment.  Local variables are declared after
              ;this directive (Not required for this example)
.CODE             ;Indicates the start of a code segment.

clear PROC
   xor eax, eax 
   xor ebx, ebx 
   ret 
clear ENDP 
END 
答案

如果跳过默认值,则需要创建自定义构建步骤。右键单击程序集源文件名,然后右键单击属性/自定义构建步骤并输入命令行和输出字段:

用于调试版本:

command: ml /Zi /c /Fo$(outdir)example.obj example.asm
output: $(outdir)example.obj

发布版本:

command: ml /c /Fo$(outdir)example.obj example.asm
output: $(outdir)example.obj

您还可能需要在汇编源文件中将clear声明为public:

        public  clear

对于64位构建,请使用ml64而不是ml。

我通常通过创建一个“空项目”,然后添加现有项目(源文件)来启动一个新项目,以避免由VS创建的默认内容。

以上是关于将Visual Studio 2017中的Assembly和C ++与命令行和输出相结合的主要内容,如果未能解决你的问题,请参考以下文章

将Visual Studio 2017中的Assembly和C ++与命令行和输出相结合

Visual Studio 2015/2017中的TSLint?

Visual Studio 2017 中的 Visual Studio 2010

如何跟踪 Visual Studio 2017(C++)中的内存使用情况?

Visual Studio 2017 中的 TypeScript:自动定义包含导致重复标识符错误

从 Visual Studio 2017 中的现有 VB.NET 项目创建 dll