使用VS2010在“Release”配置中编译libjson时出现问题

时间:2011-07-21 12:56:27

标签: c++ json visual-studio libjson

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

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

当我编译时,我得到一个错误:“释放libjson的构建,但是NDEBUG不在”

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

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)

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

答案 2 :(得分:1)

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

error C2059: syntax error : ''  

//#define JSON_DEPRECATED_FUNCTIONS 

答案 3 :(得分:0)

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

如果是,请将#define NDEBUG放在#include“stdafx.h”之后,或将其移到stdafx.h

我还要评论这条线 #define JSON_DEPRECATED_FUNCTIONS 在JSONOptions.h中,但之后我至少能够编译。