libjson 編譯和使用 - 1. 編譯


以下轉自:http://blog.csdn.net/laogong5i0/article/details/8212511

最近想用box2dEdit來編輯一下比較復雜的圖形然后倒入到自己有游戲里,但box2dEdit編輯后輸出的是json文件。

因為沒有用C++解析json文件的經驗,在網上找了很多有關json的開源項目,有cjson(這是c編寫的)jsoncpp(C++的項目,但有人說它的移植性不夠好)libjson(支持C和C++)由於對C有一種莫名的恐懼感,所以最后還是選擇了libjson這個庫。

OK!先得吧文件給下載下來,在google上搜libjson就能找到了,當前最新版是libjson_7.6.1,我用的也是這個版本。

打開一看,好多文件,這樣直接加到我們的project會很亂,所以要編譯成靜態庫。

那么開始編譯靜態庫吧!!

解壓剛剛下載下來的文件,打開libjson.vcproj文件(我用的是VS2010),由於是.vcproj 是VS2008的項目文件,所以我的VS會自動轉成vs2010的工程。

轉換的過程稍微等了10秒時間,一打開,杯具了~~~報錯!說有非法結束符,用.xml打開確實是少了">"符號,好吧加上去,繼續打開,還是報錯。這次實在是找不到是神馬錯了!接着開始懷疑是我VS的問題,好吧,那我在虛擬機上裝個VS2008來試試,費了好多時間(下載,安裝這是一個痛苦的過程),總算安裝完成了,趕快打開libjson。真是無語了,報了一樣的錯,花了這么長時間,連project工程都沒打開,libjson這庫也太坑爹了!!

既然工程沒辦法打開,那么就自己建一個工程來編譯好了!

好!!新建一個win32Project,如圖下圖,記得選static library這個程序類型。

新建成功后我們會來庫列表里發現2個.h文件和1個.cpp文件,這個文件是不需要的,我們可以把它刪除,它是我們在新建的時候勾選了precompled header 生成的。

按完成后可以吧壓縮文件里的源文件copy到我們的項目文件夾里,又看下圖,我們只要加入選中部分的文件即可。

 

然后把它添加到我們剛剛建的項目里,如下圖操作,添加后我們的庫列表就會如紅色框所看到的一樣。

OK,到了這個我們可以運行了,運行一下看看吧!!

暈死了,好多錯誤~~~~~~(難道這B就是個垃圾)

Error 12  error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?d:\android\win32project\minigame\libjson\_internal\source\libjson.cpp6061libjson

他說我們的.cpp文件忘了#include “stdafx.h”文件,難道這B真是一垃圾,人肉一下“stdafx.h” (結果),原理是win32為程序的一下配置信息,既然是些沒用的東西,那我們能不能不加它呢,又再次人肉了這個問題,原理在配置里有預編譯的設置。右鍵項目屬性,如下圖,我們把 precompiled header 項改成 Not using precompiled headers,不用預編譯頭。

然后運行,哦~~還是有錯誤,好吧繼續人肉這些概述的bug,

原來在JSONOptions.h 文件里有些需要配置的地方,在我們下載下來的壓縮文件里有一個.pdf 文件,里有詳細的說明這些選項的作用。在這里我們需要吧

#define JSON_DEPRECATED_FUNCTIONS 這是主要版本的向后兼容性和易用性的過度,不知道有什么用,但document說這個是不能用的,用了會報錯,那么我們就堅決的把它注釋掉好了。

因為我們現在還是debug模式 所以要吧 #define JSON_DEBUG 開啟,這里是設置debug模式或者release模式的。注釋掉就是release模式了。

還有#define JSON_LIBRARY這個值,這是說要使用C接口還是C++接口的函數。(這里看你喜歡啦!不注釋的話就是使用C接口,我這里用的是C接口)

編譯一下,哈哈大笑成功了!!雖然有幾個警告。找到.lib 文件,居然后4M多.

 

下一次再講 LIb的使用吧!!

 

下一篇:libjson 編譯和使用 - 2. 配置使用lib文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM