在使用stlport時,項目根據什么原則判斷是鏈接到靜態的stlport庫,還是動態的stlport庫呢?
對于MSVC來講,這一切的奧妙都在stlport/config/_msvc.h里。在這里有幾個宏需要特別注意:
_STLP_USE_DYNAMIC_LIB:定義這個宏,則鏈接到動態庫
_STLP_USE_STATIC_LIB:指示鏈接到靜態庫
_DLL:如果項目選項里設置了/MD 或者 /MDd Code Generation->Runtime Library->Multi-threaded Debug DLL (/MDd),那么將會自動定義宏_MT 和 _DLL,看到_DLL這個宏,自動鏈接到stlport動態庫。
所以,靜態還是動態鏈接到CRT庫(多線程時為LibCMT.lib,單線程時為LibC.lib),通過項目設置即可做到,此時stlport作為C++庫,也會自動根據項目設置調整。如果希望鏈接到stlport庫時的形式與CRT庫不一致,那么可以通過定義_STLP_USE_DYNAMIC_LIB或者_STLP_USE_STATIC_LIB做到。
參考:關于/MD /MT等選項的意義,可以參考MSDN相關內容