C++ Builder 編譯 jsoncpp 庫 (0.y.z 分支)

0.y.z 分支的源碼使用的是早期的 C++ 標準,可以用老版本編譯器咐低,目前最新版本是 0.10.7萝招。
本文采用的編譯器為 C++ Builder 10.2.3 版本衔瓮。

  • 下載 jsoncpp 的 0.y.z 分支的源碼
  • 創(chuàng)建編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a 的項目
  • 修改項目選項
  • 編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a
  • 下載 jsoncpp 0.10.7 (包含項目文件和編譯好了的庫文件)

一. 下載 jsoncpp 的 0.y.z 分支的源碼

在 github 上的 jsoncpp 主頁上,有 2 個分支:master 和 0.y.z:

  • master 分支:為 C++ 11 源碼贼邓,如果用 C++ Builder 需要使用 clang 編譯器
  • 0.y.z 分支:早期 C++ 標準阶冈,支持老版本的編譯器
jsoncpp 的 master 和 0.y.z 分支

選擇 0.y.z 分支之后,下載的源碼壓縮包為 jsoncpp-0.y.z.zip
解壓縮之后塑径,是 jsoncpp-0.y.z 文件夾女坑。
在 jsoncpp-0.y.z\include\json\version.h 里面可以看到版本。
我下載的是 0.10.7 版本的统舀,就是本文介紹的這個版本匆骗。

二. 創(chuàng)建編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a 的項目

打開 C++ Builder,選擇菜單 File -> New -> Other...
在打開的創(chuàng)建新項目的對話框里面誉简,左面的目錄選擇 C++ Builder Projects碉就,右面選擇 Static Library,即靜態(tài)庫項目闷串,點擊 OK 按鈕確認創(chuàng)建新項目瓮钥,如下圖所示:

File -> New -> Other... 選擇 Static Library

創(chuàng)建的新項目如下面截圖所示:

創(chuàng)建的新靜態(tài)庫項目,需要 Save All 保存到源碼的項目文件夾里面

選擇菜單 File -> Save All 或者工具條上的 Save All 按鈕 (如上面截圖所示位置),把項目保存在源碼的項目文件夾里面碉熄,如下圖示桨武,
在 jsoncpp-0.y.z\makefiles 文件夾里面創(chuàng)建 C++ Builder 10.2.3 文件夾,項目要改名為 jsoncpp.cbproj 保存在這里:

項目改名為 jsoncpp.cbproj

存盤之后的項目文件夾 "jsoncpp-0.y.z\makefiles\C++ Builder 10.2.3":

存盤之后的項目文件夾

用鼠標右鍵點擊項目管理里面的 jsoncpp.lib 項目锈津,選擇 Add... 添加源碼:

用鼠標右鍵點擊項目管理里面的 jsoncpp.lib 項目呀酸,選擇 Add... 添加源碼

選擇 jsoncpp-0.y.z\src\lib_json 里面的 3 個源碼文件:

選擇 jsoncpp-0.y.z\src\lib_json 里面的 3 個源碼文件

點擊 Open 按鈕,把源碼文件添加到項目:

項目管理里面可以看到添加進來的源碼文件

三. 修改項目選項

添加 Win64 平臺:在項目管理里面琼梆,鼠標右鍵點擊 Target Platforms性誉,選擇 Add Platform...

鼠標右鍵點擊 Target Platforms,選擇 Add Platform...

選擇 64-bit Windows:

選擇 64-bit Windows

點擊 OK 按鈕叮叹,把 64-bit Windows 添加到項目:

64-bit Windows 已經(jīng)添加

選擇菜單 Project -> Options:
左面目錄里面選擇 C++ (Shared Options)艾栋,右面的:
Target 選擇 All configuration - All platforms
BPI/LIB output 填入 ..\..\lib\cb
Final output directory 填入 ..\..\lib\cb
_TCHAR maps to 選擇 wchar_t

項目選項

然后點擊 Include path 右面的 "..." 按鈕:

添加頭文件的路徑

中間的編輯框輸入 ..\..\include 然后點擊 Add 按鈕:
這個是相對于項目的路徑爆存,即 jsoncpp.cbproj 所在的文件夾 "jsoncpp-0.y.z\makefiles\C++ Builder 10.2.3" 的上一級的上一級的 include 文件夾蛉顽,相當于 jsoncpp-0.y.z\include 文件夾。

頭文件的路徑已經(jīng)添加

可以看到頭文件的路徑已經(jīng)添加先较,點擊 OK 按鈕確認携冤。
如下面截圖所示,可以看到添加的路徑闲勺,路徑之間以分號分割的曾棕。

添加路徑之后

在項目設(shè)置左面目錄里面找到 Packages 里面的 Runtime Packages,右面的:
Target 選擇 All configurations - All platforms菜循;
Link with runtime packages 選項的打勾去掉翘地。

如果找不到這個設(shè)置選項,說明遇到創(chuàng)建靜態(tài)庫項目的 bug 了癌幕,新創(chuàng)建一個 exe 項目衙耕,或者打開其他的 exe 項目,關(guān)閉之后勺远,再重新創(chuàng)建一個靜態(tài)庫項目橙喘,就可能好了。C++ Builder 10.1 之后出現(xiàn)這個 bug胶逢,10.0 之前沒有這個 bug厅瞎。

Packages 里面的 Runtime Packages 選項

在項目設(shè)置左面目錄里面找到 C++ Linker,右面的:
Target 選擇 All configurations - All platforms初坠;
Link with Dynamic RTL 選項的打勾去掉和簸。

如果找不到這個設(shè)置選項,一般前面那個 Link with runtime packages 選項也找不到碟刺,說明遇到創(chuàng)建靜態(tài)庫項目的 bug 了锁保,新創(chuàng)建一個 exe 項目,或者打開其他的 exe 項目,關(guān)閉之后身诺,再重新創(chuàng)建一個靜態(tài)庫項目蜜托,就可能好了。C++ Builder 10.1 之后出現(xiàn)這個 bug霉赡,10.0 之前沒有這個 bug橄务。

項目的 C++ Linker 選項

項目設(shè)置完成,別忘了點擊項目設(shè)置對話框底部的 OK 按鈕穴亏,修改設(shè)置生效蜂挪。

四. 編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a

1. 編譯 Release 版本的 Win32 靜態(tài)庫 jsoncpp.lib

選擇 Release 版本的 32-bit Windows 平臺:
在項目管理里面,雙擊如下截圖所示的 Release 和 32-bit Windows嗓化,加粗字體表示已經(jīng)選中:

選擇 Release 版本棠涮,32-bit Windows 平臺

選擇菜單 Project -> Build jsoncpp 或者快捷鍵 Shift + F9 開始編譯。

等待編譯
編譯結(jié)束

編譯結(jié)束刺覆,如上面截圖所示严肪,左下角 Success 表示編譯成功,點擊中間的對話框 OK 按鈕結(jié)束谦屑。

編譯生成的 jsoncpp.lib

可以看到 jsoncpp-0.y.z\lib\cb 文件夾里面編譯生成的 jsoncpp.lib

2. 編譯 Release 版本的 Win64 靜態(tài)庫 jsoncpp.a

選擇 Release 版本的 64-bit Windows 平臺:
在項目管理里面驳糯,雙擊如下截圖所示的 Release 和 64-bit Windows,加粗字體表示已經(jīng)選中:

Release 版本氢橙,64-bit Windows 平臺

選擇菜單 Project -> Build jsoncpp 或者快捷鍵 Shift + F9 開始編譯酝枢。

等待編譯
編譯結(jié)束

編譯結(jié)束,如上面截圖所示悍手,左下角 Success 表示編譯成功帘睦,點擊中間的對話框 OK 按鈕結(jié)束。

編譯生成的 jsoncpp.lib 和 jsoncpp.a

可以看到 jsoncpp-0.y.z\lib\cb 文件夾里面編譯生成的 32 位的 jsoncpp.lib 和 64 位的 jsoncpp.a坦康。

五. 下載 jsoncpp 0.10.7

請點擊:jsoncpp-0.10.7-src-cbuilder 下載本文介紹的 jsoncpp 0.10.7 完整源碼竣付、C++ Builder 項目文件、編譯好了的庫文件涝焙、例子程序等卑笨。


參考:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赤兴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隧哮,更是在濱河造成了極大的恐慌桶良,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沮翔,死亡現(xiàn)場離奇詭異陨帆,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門疲牵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來承二,“玉大人,你說我怎么就攤上這事纲爸『ヰ” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵识啦,是天一觀的道長负蚊。 經(jīng)常有香客問我,道長颓哮,這世上最難降的妖魔是什么家妆? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮冕茅,結(jié)果婚禮上伤极,老公的妹妹穿的比我還像新娘。我一直安慰自己嵌赠,他們只是感情好塑荒,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布熄赡。 她就那樣靜靜地躺著姜挺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彼硫。 梳的紋絲不亂的頭發(fā)上炊豪,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音拧篮,去河邊找鬼词渤。 笑死,一個胖子當著我的面吹牛串绩,可吹牛的內(nèi)容都是我干的缺虐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼礁凡,長吁一口氣:“原來是場噩夢啊……” “哼高氮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起顷牌,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剪芍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窟蓝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罪裹,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了状共。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片套耕。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖峡继,靈堂內(nèi)的尸體忽然破棺而出箍铲,到底是詐尸還是另有隱情,我是刑警寧澤鬓椭,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布颠猴,位于F島的核電站,受9級特大地震影響小染,放射性物質(zhì)發(fā)生泄漏翘瓮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一裤翩、第九天 我趴在偏房一處隱蔽的房頂上張望资盅。 院中可真熱鬧,春花似錦踊赠、人聲如沸呵扛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽今穿。三九已至,卻和暖如春伦籍,著一層夾襖步出監(jiān)牢的瞬間蓝晒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工帖鸦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芝薇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓作儿,卻偏偏與公主長得像洛二,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子攻锰,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文介紹的是目前 (寫這篇文章時) 最新版本的 zint 庫 2.7.1 版本晾嘶,經(jīng)過測試,2.8.0 版本 zin...
    玄坴閱讀 2,796評論 2 4
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,343評論 0 2
  • 這幾天公司有一個新的需求口注,就是要將我們開發(fā)的某些東西都抽取出來变擒,打個比方我們開發(fā)了A項目,可以以后B項目要包含A項...
    黃魚兒啦啦啦閱讀 6,167評論 2 16
  • 問題: 背景: 工作中開發(fā)的CookieTool工具是一個MFC的程序寝志,如果選擇以共享dll中使用MFC的方式娇斑,那...
    unsummon閱讀 3,527評論 1 5
  • 四月歡岙筍拔尖策添,楓葉映紅天。杜鵑花毫缆,紫藤花唯竹,油桐花,花花爭艷苦丁,朵朵竟香浸颓。我們的車子逶迤上行至頂,泊路邊旺拉。這里正...
    碧水浩浩閱讀 1,038評論 0 0