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

Problem compiling libjson in "Release" configuration with VS2010

本文关键字:libjson 编译 问题 VS2010 Release 配置 使用      更新时间:2023-10-16

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

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

当我编译时,我得到一个错误:"libjson的发布构建,但NDEBUG不在"

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

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

对于初学者,尝试在"Release"配置中编译项目。

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

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

WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) .

添加#define NDEBUG到任何头文件或源文件在你的项目,除非你绝对知道你在做什么。如果你没有用适当的#ifdef/#endif指令包装它,这可能会导致未发布版本的问题。

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

error C2059: syntax error : ''  

//#define JSON_DEPRECATED_FUNCTIONS 

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

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

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