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

4

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

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

当我编译时,出现错误:“libjson的Release版本,但NDEBUG未打开”

由于这是我第一次使用Visual Studio,我认为我在此处犯了非常基本的错误。请您帮我看看怎么解决?

此外,如果这个包有问题,或者您知道其他无需进行大量配置即可使用的JSON解析包,我也可以使用它们。

4个回答

1
JSON_DEBUG添加到预处理器设置中可以帮助您节省时间,但我遇到了另一个错误消息:

error C2059: syntax error : ''  

//#define JSON_DEPRECATED_FUNCTIONS 

1

首先,尝试在“发布”配置下编译您的项目。

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


我在“Release”配置下编译 -> 结果相同。我还定义了NDEBUG,同样的结果。 - mynameisalon
你在哪里以及如何定义NDEBUG? - Benoît
在我创建的 main.cpp 文件中:#define NDEBUG - mynameisalon
@mynameisalon:你是在包含头文件之前完成它了吗? - Puppy

1

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

WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)

除非您完全知道自己在做什么,否则不要向项目中的任何头文件或源代码文件添加#define NDEBUG。如果没有使用适当的#ifdef / #endif指令来包装它,则可能会对非发布构建造成问题。


0

有没有类似于“警告C4603:'NDEBUG':宏未定义或在预编译头之后定义不同”的警告?

如果是的话,只需将#define NDEBUG放置在#include“stdafx.h”之后或将其移入stdafx.h中即可。

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


在任何头文件或源代码文件中放置 #define NDEBUG 都是一个非常糟糕的想法。 - Captain Obvlious

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接