【问题标题】:Compiling and linking .asm file to C++ code将 .asm 文件编译并链接到 C++ 代码
【发布时间】:2014-12-23 20:48:46
【问题描述】:

我在 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”。如果做不到这一点,我想你可以去链接器/输入并将文件添加到“附加依赖项”。
  • 你要么爱这个人,要么恨他。他有一百多个关于这个和相关主题的教程。转到这里:youtube.com/playlist?list=PL0C5C980A28FEE68D(希望我正确剪切和粘贴)

标签: c++ visual-studio-2010 assembly cmake


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2013-02-21
    • 2012-03-14
    相关资源
    最近更新 更多