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

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

jrtplib使用CMake進行編譯

2019-11-10 18:24:13
字體:
來源:轉載
供稿:網友

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。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵丘县| 拉萨市| 赫章县| 香港| 科尔| 绥化市| 绥中县| 当涂县| 潞城市| 梁山县| 巴林左旗| 吉水县| 武安市| 建始县| 大名县| 余干县| 新化县| 秦皇岛市| 云浮市| 嘉黎县| 正安县| 英山县| 泸定县| 郁南县| 诏安县| 永顺县| 和顺县| 莎车县| 大足县| 广德县| 抚宁县| 孝感市| 安泽县| 崇州市| 贵阳市| 锦州市| 惠来县| 枣庄市| 长子县| 石泉县| 始兴县|