2012-03-30 37 views
5

tôi đã tuân thủ nghiêm ngặt các tài liệu này để cài đặt và sử dụng thư viện jsoncpp trong dự án của tôi: jsoncpp READMELàm cách nào để sử dụng JSON-CPP?

Nhưng tôi vẫn còn có vấn đề này với biên soạn của tôi:

g++ -W -Wall -Werror -c -o src/ModConnection.o src/ModConnection.cpp src/ModConnection.cpp:15:23: fatal error: json/json.h: No such file or directory compilation terminated.

Nó xảy ra khi tôi đang cố gắng sử dụng #include <json/json.h>

đây là makefile Linux của tôi:

CXX  =  g++ 
NAME =  bin/server 
SRCS =  ./src/ModConnection.cpp\ 
       ./src/unixNetwork.cpp 
OBJS =  $(SRCS:.cpp=.o) 
CXXFLAGS +=  -W -Wall -Werror 
LDFLAGS =  -L ./src/jsoncpp-src-0.5.0/buildscons/linux-gcc4.5.1/src/lib_json/libjson_linux-gcc-4.5.1_libmt.a -I src/jsoncpp-src-0.5.0/include 
RM  =  rm -f 
$(NAME) :  $(OBJS) 
$(CXX) $(LDFLAGS) -o $(NAME) $(OBJS) 

all  :  $(NAME) 

clean : 
       $(RM) $(OBJS) 

fclean :  clean 
       $(RM) $(NAME) 

re  :  fclean all 

.PHONY :  all clean fclean re 

Cảm ơn giúp bạn.

+0

Phần "Xây dựng/Thử nghiệm" (từ README bạn đã liên kết đến) hướng dẫn bạn sử dụng 'python scons.py platform = your-platform-here' để xây dựng thư viện, nhưng bạn đang hiển thị' Makefile' . Tập lệnh xây dựng bạn đã đăng cho ứng dụng của mình hay cho thư viện 'jsoncpp'? –

Trả lời

3

Bạn đang chỉ định thư mục bao gồm cho jsoncpp trong biến số LDFLAGS của bạn, nhưng chúng không được sử dụng cho đến khi bạn đã biên dịch các tệp cpp riêng lẻ. Bạn cần phải đặt phần -I src/jsoncpp-src-0.5.0/include ở đâu đó trong các cờ được thêm vào các dòng biên dịch, chẳng hạn như CXXFLAGS.

Để mở rộng một chút, bạn đang sử dụng ngầm Tạo quy tắc để xây dựng các tệp .cpp riêng lẻ của mình, sau đó bạn có mục tiêu cụ thể để xây dựng ứng dụng của mình ra khỏi các đối tượng đó.

Xem GNU Make Catalog of Rules để biết thêm, nhưng một trong những bạn đang sử dụng là ở đây:

Compiling C++ programs n.o is made automatically from n.cc, n.cpp, or n.C with a recipe of the form $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c . We encourage you to use the suffix ‘.cc’ for C++ source files instead of ‘.C’.

Sửa: Bây giờ cho các lỗi liên kết của bạn.

Bạn đang gặp phải các sự cố này vì trình liên kết không thể tìm thấy việc triển khai thực tế các chức năng bạn đang gọi.

Trước tiên, chỉ thị -L của bạn cần trỏ đến thư mục chứ không phải thư viện. -L đặt đường dẫn tìm kiếm cho thư viện. Nó nên được thiết lập vào thư mục nơi thư viện xây dựng jsoncpp được tạo ra. Tiếp theo, bạn phải liên kết chính thư viện đó. Tên thư viện đó là khổng lồ, nhưng việc thêm -l json_linux-gcc-4.5.1_libmt vào LDFLAGS sẽ làm điều đó. -l (đó là ell thấp hơn) thiết lập một thư viện thực tế để liên kết.

+0

Hi Andre, tôi đã sử dụng kịch bản lệnh scons.py để xây dựng với mục tiêu 'CHECK' và tất cả đều ổn với việc xây dựng + thử nghiệm. Đó là MAKEFILE của riêng tôi. –

+0

Xin chào Collin, tôi đã đặt các dòng -I vào CXXFLAGS của mình và đây là các lỗi mới mà tôi nhận được: ' ./src/ModConnection.o: Trong hàm' main ': ModConnection.cpp :(. Text + 0x16): không xác định tham chiếu đến 'Json :: Value :: Value (Json :: ValueType) ' ' –

+0

Bây giờ, tôi không có lỗi với biên dịch của tôi kể từ khi tôi theo lời khuyên của Collins Hockey, Nhưng khi tôi ' m writting này trong chương trình chính của tôi: 'Json :: Value root;' Tôi luôn luôn nhận được lỗi này: 'ModConnection.cpp: (. text + 0x16): undefined tham chiếu đến' Json :: Value :: Value (Json :: ValueType) ' ModConnection.cpp :(. Text + 0x27): tham chiếu không xác định đối với 'Json :: Value :: ~ Value()'' –

Các vấn đề liên quan