4

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

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

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

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

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

4

4 回答 4

1

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

error C2059: syntax error : ''  

//#define JSON_DEPRECATED_FUNCTIONS 
于 2011-09-12T06:35:12.010 回答
1

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

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

于 2011-07-21T12:59:06.943 回答
1

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

WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions).

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

于 2011-07-21T19:23:45.063 回答
0

是否有类似“Warning C4603: 'NDEBUG': macro is not defined or definition is different after precompiled header”之类的警告?

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

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

于 2011-07-21T18:14:03.577 回答