Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译.asm文件并将其链接到C++;密码_C++_Visual Studio 2010_Assembly_Cmake - Fatal编程技术网

C++ 编译.asm文件并将其链接到C++;密码

C++ 编译.asm文件并将其链接到C++;密码,c++,visual-studio-2010,assembly,cmake,C++,Visual Studio 2010,Assembly,Cmake,我在Windows上使用Visual Studio 2010。我有一堆.cpp文件和一个.asm文件要一起编译 现在,我正在执行一个自定义命令,分别编译.asm,如下所示: #windows 64 bit builds need an asm file that needs to be compiled separately if (MSVC AND CMAKE_CL_64) add_custom_command(TARGET MYPROJECT

我在Windows上使用Visual Studio 2010。我有一堆.cpp文件和一个.asm文件要一起编译

现在,我正在执行一个自定义命令,分别编译.asm,如下所示:

#windows 64 bit builds need an asm file that needs to be compiled separately
if (MSVC AND CMAKE_CL_64)
  add_custom_command(TARGET MYPROJECT
                            PRE_BUILD
                            COMMAND "$ENV{VCInstallDir}/bin/x86_amd64/ml64" /c /W2 /nologo /errorReport:none 
                            /Fo${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.dir/Debug/ 
                            #/Fo"C:/MYPROJECT/Build/Main_ms100_64/MYPROJECT.dir/Debug/"
                            $CSrcDir}/masm64.asm
                            COMMENT "Building asm file")
endif()
这会将.obj文件与其他obj文件放在正确的位置,但链接器似乎不包含它。如何使链接器成为masm64.obj文件


作为替代解决方案,我尝试将文件的源属性设置为“LANGUAGE ASM”,但它仍然没有编译它。

我通常在文件本身上设置自定义生成工具。有一个复选框指示输出是否参与生成。根据我的经验,我发现如果我选中了这个框,那么汇编程序将输出到正确的中间目录。我发现,如果使用自定义命令,我必须明确地将对象文件添加到链接器命令行。

添加.asm文件时,我总是忘记做的事情是右键单击项目(而不是解决方案),然后选择“生成自定义设置”并选中“masm”。如果做不到这一点,我建议你可以去Linker/Input,将文件添加到“附加依赖项”中。你要么爱这个家伙,要么恨他。他有一百多本关于这个和相关主题的教程。到这里:(我希望我把它剪好贴好)