国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

jrtplib使用CMake進行編譯

2019-11-10 19:06:45
字體:
來源:轉載
供稿:網友

jrtplib版本是3.10.0,cmake版本3.7.2,cmake使用的編譯器(Native Compilers)是Visual Studio 14 2015(v140),IDE版本是Microsoft Visual Studio Community 15.

這兩天研究jrtplib的編譯和使用,本身在Console控制臺環境下已經通過了。但是將jrtplib聯立到MFC中,則出現了死活編譯不過的情況。大致的報錯如下:

> jrtplib_d.lib(rtPRandomrands.obj) : error LNK2019: 無法解析的外部符號 __imp__rand_s,該符號在函數 "public: virtual unsigned char __thiscall jrtplib::RTPRandomRandS::GetRandom8(void)" (?GetRandom8@RTPRandomRandS@jrtplib@@UAEEXZ) 中被引用> jrtplib_d.lib(rtprandom.obj) : error LNK2019: 無法解析的外部符號 __imp___getpid,該符號在函數 "public: unsigned int __thiscall jrtplib::RTPRandom::PickSeed(void)" (?PickSeed@RTPRandom@jrtplib@@QAEIXZ) 中被引用> msvcrtd.lib(_chandler4gs_.obj) : error LNK2019: 無法解析的外部符號 __except_handler4_common,該符號在函數 __except_handler4 中被引用

在MFC工程中,我確定正確設置了附加依賴庫和庫路徑位置,因此只可能是jrtplib本身的編譯存在問題。

經查閱資料,發現主要是MFC底層依賴了libcmt.lib(Release)/libcmtd.lib(Debug)和msvcrt.lib(Release)/msvcrtd.lib(Debug)庫,jrtplib代碼生成的運行庫類型和MFC不一致導致。因此,主要采用了兩步解決了以上鏈接問題。

忽略默認庫。 打開cmake生成jrtplib項目下的jrtplib-static工程屬性,選擇“配置屬性”->“庫管理器”->“常規”->“忽略特定默認庫”,填充libcmt.lib;libcmtd.lib;msvcrt.lib;msvcrtd.lib;調整代碼生成運行庫類型。打開cmake生成jrtplib項目下的jrtplib-static工程屬性,選擇“C/C++”->“代碼生成”->“運行庫”,選擇“多線程(/MT)”,與MFC的運行庫類型保持一致。

然后生成項目(ALL_BUILD),安裝(INSTALL),exampleX的5個項目可能會出問題,不用管他們,如果需要可以手動修改各自的代碼生成運行庫類型為/MT。

再導入到MFC項目中就正常啦。

PS. 如果編譯jrtplib時沒有選擇jthread,MFC項目里實際用的時候也不用鏈接jthread.lib。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长乐市| 凤山市| 焉耆| 沧州市| 呼玛县| 合川市| 藁城市| 肃南| 车险| 德江县| 马龙县| 大方县| 西乌珠穆沁旗| 金山区| 台南市| 京山县| 湖口县| 博客| 福清市| 齐河县| 晋宁县| 朝阳区| 汾西县| 崇州市| 阿克| 收藏| 广河县| 道孚县| 青神县| 玉环县| 莆田市| 萨迦县| 咸丰县| 柳林县| 洞口县| 定日县| 南江县| 偃师市| 绍兴市| 靖江市| 深泽县|