使用 VS2010 在"Release"配置中编译 libjson 时出现问题
Problem compiling libjson in "Release" configuration with VS2010
我下载了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中,但在那之后我至少能够编译。