簡體   English   中英

包含jsoncpp庫時出錯

[英]Error while including the jsoncpp lib

我正在嘗試使用C ++解析JSON。 我的Makefile如下所示:

LDFLAGS = -L/home/ting/Temp/code/jsoncpp/libs/linux-gcc-5.4.0/ ./jsoncpp/libs/linux-gcc-5.4.0/libjson.a ./jsoncpp/libs/linux-gcc-5.4.0/libjson.so
INC = -I/home/ting/Temp/code/jsoncpp/include/json

CC=g++
CFLAGS = -std=c++11


main: main.cpp
    $(CC) -o $@ $(LDFLAGS) $(INC) $^ ${CFLAGS}

當我簡單地#include "json.h" ,編譯器給了我很多錯誤。 我只是挑選了其中一些:

/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:44:19: error: 
missing binary operator before token "("
 #if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE)
               ^
In file included from /usr/include/c++/5/cwchar:44:0,
             from /usr/include/c++/5/bits/postypes.h:40,
             from /usr/include/c++/5/iosfwd:40,
             from /usr/include/c++/5/ios:38,
             from /usr/include/c++/5/istream:38,
             from /usr/include/c++/5/fstream:38,
             from main.cpp:1:
/usr/include/wchar.h:74:43: error: missing binary operator before token "("

庫看起來沒有任何錯誤。 但是,僅當我鏈接到jsoncpp庫並將其包含目錄添加到Makefile中時,才會出現此問題。

我感到很困惑; 發生了什么?

您的jsoncpp包括必須像這樣:

#include <json/json.h>

並且您的包含路徑必須以包含目錄結尾,方法是:

INC = -I/home/ting/Temp/code/jsoncpp/include

如果您從include中省略json目錄,然后將其添加到INC變量中,編譯器將最終從json目錄中選擇一個features.h標頭,而不是glibc所需的features.h ,這會產生類似於一個錯誤您發布的內容(請注意glibc中的features.h定義了__GLIBC_PREREQ宏)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM