Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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++ cl.exe和ml.exe存在问题_C++_Visual Studio_Compiler Errors_Cl.exe - Fatal编程技术网

C++ cl.exe和ml.exe存在问题

C++ cl.exe和ml.exe存在问题,c++,visual-studio,compiler-errors,cl.exe,C++,Visual Studio,Compiler Errors,Cl.exe,我使用cl命令编译了一个cpp文件: cl test.cpp //the generated test.exe can work well 然后我用了另一种方式: cl /Fa /c test.cpp //generate a test.asm assembly file ml test.asm // there failed!!! 为什么??如何解决 源代码: //:test.cpp #include<iostream> using namespace st

我使用cl命令编译了一个cpp文件:

cl test.cpp  //the generated  test.exe can work well
然后我用了另一种方式:

cl /Fa /c test.cpp   //generate a test.asm assembly file
ml test.asm   // there failed!!!
为什么??如何解决

源代码:

//:test.cpp 

 #include<iostream>
 using namespace std;
 int main()
  {
    cout<<"hello\n";
  }
<>这可能是C和C++的区别。这几天让我很困惑(


如何解决?请帮助我。

当生成异常处理代码时,编译器会生成无效的程序集列表。Microsoft Connect上存在一个打开的错误:

在对bug的响应中,有一个半心半意的“我们将考虑修复这个”,同时还声明“C/C++编译器生成的文件是为了信息目的”。 看起来您可以针对此特定问题进行“可编写脚本”的修复:

  • 剪切
    text$x ENDS
    语句后面的
    ENDP
    语句
  • 将其粘贴到上一个
    \u文本结束之前
至少这看起来是你的简单程序生成的asm文件中的模式——我不知道这种模式是否普遍适用


不幸的是,在应用此修复程序后,使用
fs
重写和一些未定义符号的指令会出现一些新问题。谁知道在使用更复杂的程序尝试此操作后还会遇到什么问题呢?

您发布的代码编译得很好。可能是您的编译器有问题?您使用的是哪种编译器?呵呵w?我使用Visual studio 2010I复制。ENDP上方的_文本结尾位置错误,它需要位于其下方。这种情况不止一次,它会被使用/EHs时获得的异常处理程序绊倒(必需)你可以在连接上报告bug。MySo.ToMi修改了ASM文件,把EnP放到了文本的末尾。但是我还是关闭了C++异常选项,然后重试。同样的错误非常感谢。我在你所说的时候修复文件。解决这个不匹配的问题。然后我修改<代码> FS<代码>。但是第二个问题是关于未定义的符号,我还不能解决它。在2010年,它比“半心半意”更重要:在使用Microsoft C/C++编译器以x64为目标之前,我们呼吁不再支持汇编C/C++生成的列表文件。换句话说,列表文件仅供参考。即使不受支持,x86目标编译器中的列表文件也有可能被汇编。But使用x64目标编译器,会有许多事情会阻止汇编列表文件
//test.cpp
#include<stdio.h>
void main()
{
  printf("hello");
}
cl /Fa /c test.cpp
ml test.asm //ok!