2011-07-21 35 views
4

我下載了libjson軟件包並將其添加到我的VS2010項目文件夾中。我創建了一個名爲checkJson新項目,並添加以下代碼:使用VS2010在「Release」配置中編譯libjson的問題

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

我編譯時出現錯誤:「libjson的發佈版本,但NDEBUG不上」

由於這是第一次我正在使用Visual Studio我認爲我在這裏有一個非常基本的錯誤。你能幫我嗎 ?另外,如果這個軟件包有問題,或者你知道一些其他的json解析軟件包,我可以在沒有很多配置問題的情況下使用它,我不會使用它們而不是這個軟件包。

回答

1

對於初學者,請嘗試在「發佈」配置中編譯項目。

如果它工作(我相信它應該),即使在調試配置中,您也可以嘗試並定義NDEBUG變量。但它可能產生意想不到的結果!

+0

我在編 「釋放」 配置 - >相同的結果。我還定義了NDEBUG,同樣的結果。 – mynameisalon

+0

你在哪裏以及如何定義NDEBUG? –

+0

在我創建的main.cpp中:#define NDEBUG – mynameisalon

0

是否有像 這樣的警告「警告C4603:'NDEBUG':宏未定義或預編譯頭後的定義不同」。

如果是的話,不僅僅是放置的#define NDEBUG AFTER中的#include「stdafx.h中」或將其移動到stdafx.h中

我還評論了線JSONOptions.h #define JSON_DEPRECATED_FUNCTIONS ,但之後,我至少能夠編譯。

+0

在任何頭文件或源文件中放置'#define NDEBUG'是一個非常糟糕的主意。 –

1

Visual Studio將在創建項目時將NDEBUG指令添加到項目的預處理器設置。有可能沿線的某處被刪除或更改。進入項目屬性並選擇適當的配置(在本例中爲「Release」)。然後進入Configuration Properties -> C/C++ -> Preprocessor。在頂部你會看到Preprocessor Directives。在此屬性中確保NDEBUG存在。如果沒有添加它。請注意,該屬性將包含多個預處理器定義,每個定義由分號分隔。例如,在32位Windows控制檯應用程序中,您會看到類似這樣的內容 -

WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)

執行不是#define NDEBUG添加到項目中的任何頭文件或源文件,除非您完全知道自己在做什麼。如果你沒有用適當的#ifdef /#endif指令包裝它,這可能會導致非發佈版本的問題。

1

JSON_DEBUG添加到預處理器設置可以節省您。 但我遇到另一個錯誤消息:

error C2059: syntax error : '' 

//#define JSON_DEPRECATED_FUNCTIONS