在使用stlport時(shí),項(xiàng)目根據(jù)什么原則判斷是鏈接到靜態(tài)的stlport庫(kù),還是動(dòng)態(tài)的stlport庫(kù)呢?
對(duì)于MSVC來(lái)講,這一切的奧妙都在stlport/config/_msvc.h里。在這里有幾個(gè)宏需要特別注意:
_STLP_USE_DYNAMIC_LIB:定義這個(gè)宏,則鏈接到動(dòng)態(tài)庫(kù)
_STLP_USE_STATIC_LIB:指示鏈接到靜態(tài)庫(kù)
_DLL:如果項(xiàng)目選項(xiàng)里設(shè)置了/MD 或者 /MDd Code Generation->Runtime Library->Multi-threaded Debug DLL (/MDd),那么將會(huì)自動(dòng)定義宏_MT 和 _DLL,看到_DLL這個(gè)宏,自動(dòng)鏈接到stlport動(dòng)態(tài)庫(kù)。
所以,靜態(tài)還是動(dòng)態(tài)鏈接到CRT庫(kù)(多線(xiàn)程時(shí)為L(zhǎng)ibCMT.lib,單線(xiàn)程時(shí)為L(zhǎng)ibC.lib),通過(guò)項(xiàng)目設(shè)置即可做到,此時(shí)stlport作為C++庫(kù),也會(huì)自動(dòng)根據(jù)項(xiàng)目設(shè)置調(diào)整。如果希望鏈接到stlport庫(kù)時(shí)的形式與CRT庫(kù)不一致,那么可以通過(guò)定義_STLP_USE_DYNAMIC_LIB或者_(dá)STLP_USE_STATIC_LIB做到。
參考:關(guān)于/MD /MT等選項(xiàng)的意義,可以參考MSDN相關(guān)內(nèi)容