VS2013下使用cjson


想要在C++實現json文件的讀取。因為中間也遇到過很簡單的坑,為了增加記憶,對實現過程做一個記錄。

本文采用的是靜態鏈接庫的方式:

1、先在github上下載源碼, json源碼下載地址  

2、打開makefiles\msvc2010\jsoncpp.sln,會出現三個Project:jsontest, lib_json, test_lib_json

3、選擇中間的lib_json項目,右鍵屬性 —》C/C++ —》代碼生成—》運行庫,選擇多線程DLL(/MD)

4、還是lib_json項目,右鍵重新生成,就會生成一個lib_json.lib文件。

5、將include\json文件夾下的.h文件拷貝出來,加入到自己的testjson工程包含目錄下,將lib_json.lib拷貝到testjson工程的庫目錄下,並在配置屬性—》鏈接器—》輸入中,添加lib_json.lib

6、開始調試自己的testjson工程,可以使用json了

 

編譯cef_binary_3.3112.1659.gfef43e0_windows32,生成了一個libcef_dll_wrapper.lib,供另一個工程所用。結果編譯的時候報錯。 
錯誤信息如下: 
1>libcef_dll_wrapper.lib(ImfTiledRgbaFile.obj) : error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(obs-browser.obj 中) 
1>libcef_dll_wrapper.lib(IexBaseExc.obj) : error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(obs-browser.obj 中) 
1>libcef_dll_wrapper.lib(ImfHeader.obj) : error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(obs-browser.obj 中) 
1>libcef_dll_wrapper.lib(ImfFrameBuffer.obj) : error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(obs-browser.obj 中)

工程的運行庫不匹配導致的。

解決辦法: 在編譯生成libcef_dll_wrapper.lib的工程中修改, 
在工程上右鍵-》屬性-》c/c++-》代碼生成-》運行庫 
有四個選項及含義分別如下: 
多線程調試Dll (/MDd) 對應的是MD_DynamicDebug 
多線程Dll (/MD) 對應的是MD_DynamicRelease 
多線程(/MT) 對應的是MD_StaticRelease 
多線程(/MTd)對應的是MD_StaticDebug

error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug 
從上面的錯誤提示可知,我們原來選擇的是 多線程(/MTd) ,改為 多線程調試Dll (/MDd) 選項 即可。

當然有的人遇到這樣的問題,是要將 多線程調試Dll (/MDd) 改為 多線程(/MTd) 解決問題的。 
無論是哪種,總之要將運行庫選項配成一致即可!


免責聲明!

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



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