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

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

jrtplib使用CMake進行編譯

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

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。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太保市| 乌兰察布市| 肇庆市| 永定县| 景东| 临高县| 邵阳县| 宁阳县| 息烽县| 宁武县| 通州区| 柳林县| 屏边| 惠水县| 甘洛县| 淮阳县| 益阳市| 剑河县| 尤溪县| 叶城县| 保靖县| 元谋县| 时尚| 仲巴县| 科技| 观塘区| 内江市| 陇南市| 马鞍山市| 汉寿县| 江阴市| 顺义区| 伊金霍洛旗| 濮阳县| 溧水县| 德格县| 宕昌县| 奈曼旗| 平遥县| 喀喇沁旗| 安溪县|