使用 C/C++ 获取错误消息 MSB6006 错误代码 2

匿名的

我收到以下消息试图编译一些简单的代码:MSB6006 "CL.exe" exited with code 2

我正在努力学习 C++。我知道一些 C。我知道这两种语言是完全不同的语言。我包含了这两个标签,因为根据我尝试编译代码的方式,我会得到不同的结果。

为了我自己的教育,我正在尝试编写一个词法分析器。主要问题似乎出在这个函数上:

word scan(char** source)
{
    word w;
    w.lexeme[0] = '\0';
    return w;
}

我遇到了与MSB6006相同的问题:“CL.exe”以代码 2 退出,但答案不适用于我的情况。我看到这个问题错误 MSB6006: "CL.exe" exited with code 2指向MSDN 站点上的这个问题他们似乎表明小问题可能导致此错误代码。

我有两个文件。一个是“驱动程序”,另一个是词法分析器代码。但是如果我将所有内容都包含在一个文件中,我会得到完全相同的结果。

这是驱动程序的代码:

#include "pch.h"
#include "Cl2aDLL.h"

void Cl2a(char argv1[], char argv2[])
{
    char** source = NULL;
    scan(source);
}

这是标题的代码。我从 MSFT 网站的某个地方获得了该技术:

#pragma once
#ifndef CL2ADLL__H__
#define CL2ADLL__H__

typedef struct {
    char* lexeme;
}word;

#ifdef __cplusplus
extern "C" {
#endif

#ifdef CL2ADLL_EXPORTS
#define CL2ADLL_API __declspec(dllexport)
#else
#define CL2ADLL_API __declspec(dllimport)
#endif

    CL2ADLL_API  void Cl2a(char argv1[], char argv2[]);

    word scan(char** source);

#ifdef __cplusplus
}
#endif

#endif // ! CL2ADLL__H__

这是词法分析器的代码:

//  Error   MSB6006 "CL.exe" exited with code 2.

#include "pch.h"
#include "Cl2aDLL.h"

/*
//  when I comment out the following lines, it compiles and runs okay
word scan(char** source)
{
    word w;
    w.lexeme[0] = '\0';
    return w;
}
*/

//  if I only have the following, I get compile error if .cpp
word scan(char** source)
{
}

奇怪的是,如果我编译为 C 代码,它编译并运行正常。但是,如果我尝试编译为 C++,则会收到错误消息。如果我取消注释扫描仪的第一个版本,我会收到编译为 C 或 C++的错误消息

有谁知道可以删除此错误消息的更改?

抱歉问了这么长的问题,但我试图尽可能清楚地给出问题的定义。因为我想不出哪里出了问题。TIA。

更新:我使用的是 VS 2019 社区版 16.1.1

更新 2:我在 16.1.2 版中得到了相同的结果。但是在VS2017 Community Edition 15.9.12尝试代码就出现了问题,如下图。

另外我应该解释一下,上面所有的代码都在一个 .dll 文件中。.dll 代码是从一个简单的控制台应用程序运行的,如下所示:

#include "..\CL2aDLL\CL2aDLL.h"

int main(int argc, char* argv[])
{
    char        parm1[1 + 1] = "";
    char        parm2[1 + 1] = "";

    if (argc == 1) {
        Cl2aDLL(parm1, parm2);
    }
    else {
        Cl2aDLL(argv[1], argv[2]);
    }

    return 0;
}
匿名的

我做了一些额外的研究。

在 VS Community Edition 15.9.12 中运行代码显示该行w.lexeme[0] = '\0';试图使用未初始化的指针。

修正后的函数为:

word scan(char** source)
{
    word w;

    w.lexeme = (char*)malloc(1);    //  <-- line added
    w.lexeme[0] = '\0';
    return w;
}

这编译并运行正常。

但是,这仍然不能解释为什么此代码会出现 MSB6006 错误:

word scan(char** source)
{
}

这仅在编译为 C++ 时发生。如果编译为 C,它编译并运行正常。

更新:我向 MSFT 报告了这个问题,但看起来他们还没有解决这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误MSB6006:“ svnversion.exe”退出,代码为1

来自分类Dev

“dotnet build”命令失败并出现错误 MSB6006:“csc.exe”以代码 1 退出

来自分类Dev

链接Visual C ++项目(VS 2010)导致错误MSB6006:“ link.exe”退出,代码为1073741515

来自分类Dev

带有Angular2的MVC Core:MSB6006“ tsc.exe”退出,代码为1

来自分类Dev

MSB6006:“ cmd.exe”退出,代码为-1073741571

来自分类Dev

使用$(...)获取子命令的错误代码

来自分类Dev

node.js模块安装版本Microsoft.Cpp.x 64.Targets(146,5):错误MSB6006:“ CL.exe

来自分类Dev

错误MSB6006“ MakeAppx.exe” Microsoft.AppXPackage.Targets在Windows Phone设备上调试Visual Studio Cordova应用程序

来自分类Dev

node.js模块安装版本Microsoft.Cpp.x 64.Targets(146,5):错误MSB6006:“ CL.exe

来自分类Dev

PostgreSQL如何使用标准的错误代码和错误消息

来自分类Dev

如何为验证消息使用不同的错误代码?

来自分类Dev

Python 3.4.3 virtualenv错误代码2

来自分类Dev

使用 smsapi 发送短信时获取错误代码 14

来自分类Dev

为什么Python的argparse为SystemExit使用错误代码2?

来自分类Dev

使用Cloudformation的EC2错误:服务:AmazonEC2;状态码:400;错误代码:IncorrectInstanceState

来自分类Dev

错误的错误代码

来自分类Dev

无法使用 dpkg - Ubuntu 18.04 上的“E:子进程 /usr/bin/dpkg 返回错误代码 (2)”

来自分类Dev

AWS EC2 getaddrinfo ENOTFOUND错误代码

来自分类Dev

Facebook iOS登录问题-错误代码2

来自分类Dev

错误代码:带有2个主键的1451

来自分类Dev

2结帐错误代码:PE102

来自分类Dev

出现错误代码2的Admob广告(不显示)

来自分类Dev

2结帐错误代码:PE102

来自分类Dev

使用Restangular处理错误代码(401、403)

来自分类Dev

错误代码1111。无效使用组功能

来自分类Dev

使用retryWhen根据http错误代码更新令牌

来自分类Dev

使用“ return next(err);”引发错误代码

来自分类Dev

使用exec()运行PhantomJS时返回错误代码127

来自分类Dev

使用T-SQL,如何捕获OS错误代码?

Related 相关文章

  1. 1

    错误MSB6006:“ svnversion.exe”退出,代码为1

  2. 2

    “dotnet build”命令失败并出现错误 MSB6006:“csc.exe”以代码 1 退出

  3. 3

    链接Visual C ++项目(VS 2010)导致错误MSB6006:“ link.exe”退出,代码为1073741515

  4. 4

    带有Angular2的MVC Core:MSB6006“ tsc.exe”退出,代码为1

  5. 5

    MSB6006:“ cmd.exe”退出,代码为-1073741571

  6. 6

    使用$(...)获取子命令的错误代码

  7. 7

    node.js模块安装版本Microsoft.Cpp.x 64.Targets(146,5):错误MSB6006:“ CL.exe

  8. 8

    错误MSB6006“ MakeAppx.exe” Microsoft.AppXPackage.Targets在Windows Phone设备上调试Visual Studio Cordova应用程序

  9. 9

    node.js模块安装版本Microsoft.Cpp.x 64.Targets(146,5):错误MSB6006:“ CL.exe

  10. 10

    PostgreSQL如何使用标准的错误代码和错误消息

  11. 11

    如何为验证消息使用不同的错误代码?

  12. 12

    Python 3.4.3 virtualenv错误代码2

  13. 13

    使用 smsapi 发送短信时获取错误代码 14

  14. 14

    为什么Python的argparse为SystemExit使用错误代码2?

  15. 15

    使用Cloudformation的EC2错误:服务:AmazonEC2;状态码:400;错误代码:IncorrectInstanceState

  16. 16

    错误的错误代码

  17. 17

    无法使用 dpkg - Ubuntu 18.04 上的“E:子进程 /usr/bin/dpkg 返回错误代码 (2)”

  18. 18

    AWS EC2 getaddrinfo ENOTFOUND错误代码

  19. 19

    Facebook iOS登录问题-错误代码2

  20. 20

    错误代码:带有2个主键的1451

  21. 21

    2结帐错误代码:PE102

  22. 22

    出现错误代码2的Admob广告(不显示)

  23. 23

    2结帐错误代码:PE102

  24. 24

    使用Restangular处理错误代码(401、403)

  25. 25

    错误代码1111。无效使用组功能

  26. 26

    使用retryWhen根据http错误代码更新令牌

  27. 27

    使用“ return next(err);”引发错误代码

  28. 28

    使用exec()运行PhantomJS时返回错误代码127

  29. 29

    使用T-SQL,如何捕获OS错误代码?

热门标签

归档