天天看點

cocos2d 引入jsoncpp 詳解 (for android)

先下載下傳jsoncpp

再在cocos2d工程中Add一個新的Lib項目

cocos2d 引入jsoncpp 詳解 (for android)

建立一個Win32的控制台程式,放在cocos2d根目錄下,就是和cocos2dx平齊的一個目錄。名字可以随便取,我的叫libJson

(截圖中用的lib_Json,因為之前libJson已經建立了,為了截圖不得不取另一個名字...後面很多地方我都是假設自己建立的工程名是libJson,如圖照搬的同學就請注意一下這個細節吧)

cocos2d 引入jsoncpp 詳解 (for android)

點選OK後,next,然後出現一個選項面闆,選擇static library

cocos2d 引入jsoncpp 詳解 (for android)

finish以後,将程式自動生成的那些沒用的檔案删掉,然後打開下載下傳并解壓好的jsonCpp檔案夾,找到include檔案夾和src檔案夾,将它們拷貝到自己剛剛建立的libjson工程根目錄下,并導入到項目中

cocos2d 引入jsoncpp 詳解 (for android)

右鍵libJson,選擇properties,做出如下修改(其實我隻是完全按照cocos2d其他lib工程的properties做出修改。至于都改了什麼,我可能沒有列很全。如果大家修改完對應屬性以後,程式還是無法正常編譯,則可以手動右鍵一個cocos2d自己的lib工程,然後按照那個工程的屬性,對自己工程屬性進行一對一的修改)

修改C/C++  >>> General >>> Additional IncludeDirectories

添加include路徑:$(SolutionDir)libJson\include

cocos2d 引入jsoncpp 詳解 (for android)

以下的是我不知道應不應該改的東西,但是為了和cocos2d其他lib工程保持一緻,還是改掉了。

cocos2d 引入jsoncpp 詳解 (for android)
cocos2d 引入jsoncpp 詳解 (for android)
cocos2d 引入jsoncpp 詳解 (for android)

差不多就是以上的修改了

接下來就要開始寫這個lib的Android.mk檔案了

在libJson工程根目錄下,建立一個記事本,重命名為Android.mk

用EditPlus等工具打開該檔案,輸入如下内容

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := libJson_static

LOCAL_MODULE_FILENAME := libJson

LOCAL_SRC_FILES := src\lib_json\json_value.cpp \

src\lib_json\json_reader.cpp \

src\lib_json\json_writer.cpp

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

LOCAL_CPPFLAGS += -fexceptions

include $(BUILD_STATIC_LIBRARY)

這個工程基本上就這樣了

接下來我們要修改需要引入jsonCpp的工程properties

右鍵自己的cocos2d項目,選擇properties >>>C/C++ >>> General

inlucde路徑裡添加  $(SolutionDir)libJson\include\json

然後是在Linker >>> Input中

Addtion Dependencies 添加 libJson.lib

如此以後,在需要用到json的地方隻要

#include "json.h"

就能使用json内的所有内容啦

但是這隻是在VC中能使用JsonCpp而已,如果要移植到android中,需要修改項目jni\Android.mk檔案

修改的語句如下

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \

$(LOCAL_PATH)/../../../libJson/include/json

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_staticlibJson_static

$(call import-module,libJson)

添加call那一句的時候,注意在它的上一行末尾加上“\”

如圖:

cocos2d 引入jsoncpp 詳解 (for android)

好了  編譯吧~~~大功告成了~~~~~~~~

補充:

libJson建完後記得編譯一次,讓它在cocos2d-2.0的debug.win32中生成一個.lib檔案。