在使用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相关内容