【问题标题】:Problem compiling libjson in "Release" configuration with VS2010使用 VS2010 在“发布”配置中编译 libjson 时出现问题
【发布时间】:2011-07-21 12:56:27
【问题描述】:

我下载了libjson 包并将其添加到我的VS2010 项目文件夹中。我创建了一个名为 checkJson 的新项目并添加了以下代码:

#include "../../libjson/libjson.h"
int main(){ return 0;}

编译时出现错误:“发布 libjson 的构建,但未启用 NDEBUG”

由于这是我第一次使用 Visual Studio,我想我在这里犯了一个非常基本的错误。你能帮帮我吗?

此外,如果这个包有问题,或者如果你知道我可以使用其他一些没有很多配置问题的 json 解析包,我不在乎使用它们来代替这个包。

【问题讨论】:

    标签: c++ json visual-studio libjson


    【解决方案1】:

    对于初学者,请尝试在“发布”配置中编译您的项目。

    如果它有效(我相信它应该有效),即使在调试配置中,您也可以尝试定义 NDEBUG 变量。但它可能会产生意想不到的结果!

    【讨论】:

    • 我在“发布”配置中编译 -> 相同的结果。我还定义了 NDEBUG,同样的结果。
    • 您在哪里以及如何定义 NDEBUG 的?
    • 在我创建的 main.cpp 中:#define NDEBUG
    • @mynameisalon:你在之前包括标题了吗?
    【解决方案2】:

    Visual Studio 将在创建项目时将 NDEBUG 指令添加到项目的预处理器设置中。这条线的某处可能已被删除或更改。进入项目属性并选择适当的配置(在本例中为“发布”)。然后进入Configuration Properties -> C/C++ -> Preprocessor。在顶部你会看到Preprocessor Directives。在此属性中确保存在 NDEBUG。如果没有添加它。请注意,此属性将包含多个预处理器定义,每个定义用分号分隔。例如,在 32 位 Windows 控制台应用程序中,您会看到类似这样的内容 -

    WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions).

    不要不要#define NDEBUG 添加到项目中的任何头文件或源文件中,除非您完全知道自己在做什么。如果您不使用适当的 #ifdef/#endif 指令包装它,这可能会导致非发布版本出现问题。

    【讨论】:

      【解决方案3】:

      在预处理器设置中添加JSON_DEBUG 可以节省您的时间。 但我遇到另一个错误消息:

      error C2059: syntax error : ''  
      

      //#define JSON_DEPRECATED_FUNCTIONS 
      

      【讨论】:

        【解决方案4】:

        是否有类似的警告 "警告 C4603: 'NDEBUG' : 宏未定义或预编译头后定义不同".?

        如果是,那么只需将#define NDEBUG 放在#include "stdafx.h" 之后或将其移动到stdafx.h 中

        我还必须评论该行 #define JSON_DEPRECATED_FUNCTIONS 在 JSONOptions.h 中,但在那之后我至少能够编译。

        【讨论】:

        • #define NDEBUG 放在任何头文件或源文件中是一个非常的坏主意。
        猜你喜欢
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-08
        • 1970-01-01
        • 2013-09-22
        • 2010-12-11
        相关资源
        最近更新 更多