關於lib庫的版本問題

2021-06-16 06:55:43 字數 1364 閱讀 2624

源文件

<

>

_msc_ver 定義編譯器的版本。下面是一些編譯器版本的

_msc_ver

2的鏈結)

ms vc++ 10.0 _msc_ver = 1600

ms vc++ 9.0 _msc_ver = 1500

ms vc++ 8.0 _msc_ver = 1400

ms vc++ 7.1 _msc_ver = 1310

ms vc++ 7.0 _msc_ver = 1300

ms vc++ 6.0 _msc_ver = 1200

ms vc++ 5.0 _msc_ver = 1100

其中ms vc++ 10.0

就是visual c++ 2010

,ms vc++ 9.0

就是visual c++ 2008

,ms vc++ 8.0

就是visual c++ 2005

1的鏈結.

在程式中加入

_msc_ver

巨集可以根據編譯器版本讓編譯器選擇性地編譯一段程式。例如乙個版本編譯器產生的

lib檔案可能不能被另乙個版本的編譯器呼叫,那麼在開發應用程式的時候,在該程式的

lib呼叫庫中放入多個版本編譯器產生的

lib檔案。在程式中加入

_msc_ver

巨集,編譯器就能夠在呼叫的時根據其版本自動選擇可以鏈結的

lib庫版本,如下所示。

#if _msc_ver >= 1400 // for vc8, or vc9

#ifdef _debug

#pragma comment( lib, "somelib-vc8-d.lib" )

#else if

#pragma comment( lib, "somelib-vc8-r.lib" )

#endif

#elif _msc_ver >= 1310 // for vc71

#ifdef _debug

#pragma comment( lib, "somelib-vc71-d.lib" )

#else if

#pragma comment( lib, "somelib-vc71-r.lib" )

#endif

#elif _msc_ver >=1200 // for vc6

#ifdef _debug

#pragma comment( lib, "somelib-vc6-d.lib" )

#else if

#pragma comment( lib, "somelib-vc6-r.lib" )

#endif

#endif

關於linxu下 lib庫相關問題的

因為要寫個自動打版工具,發現scp無法使用。因為openssl庫太過老舊,所以就公升級了一下。用yum公升級之後,scp確實可以使用了。但是原來專案的libssl.so卻出現了問題,cmake編譯專案的時候無法找到libssl庫,報錯 error while loading shared libra...

關於lib靜態鏈結問題

在vc中 error lnk2019 無法解析的外部符號 sscanf 說明lib中用到這個函式,但這個函式卻沒有定義實現。直接在vs2013及vs2015中均無法搜尋到有 宣告 sscanf 的檔案。有什麼辦法能鏈結到 sscanf 的實現函式?或者因為sscanf sscanf s這樣的函式在系...

boost庫中 不同版本載入lib的方式

boost庫1.53以前的並不支援vs2013編譯,只有之後的可以。所以我們需要用2013編譯後的lib檔案替換我們需要的。boost並不需要我們手動載入lib,因為其在boost config auto link.hpp中按巨集進行了設定。vc11 define boost lib toolset...