当我通常使用来自第三方(非标准)C++库的代码(包括头文件)时,预构建的二进制文件链接到(或包含在)代表我的应用程序的目标可执行文件中,但是C++标准库会发生什么? ,据我所知,我不必运送一个只使用C++标准库代码的应用程序库,因此代码是静态链接并包含在可执行文件中的吗?
Mar*_*ork 11
不,默认情况下,标准库在运行时动态链接.
运行动态加载程序时,如果发现它加载并运行,则会查看动态库的几个标准位置,否则应用程序将退出.
在Unix系统上:
/ usr/lib:寻找:libstdc ++*
在Windows上:
c:\ windows\system32查找:MSVCRT.DLL
还有一些环境变量会影响搜索路径.查看dlopen的平台手册页,看看它们是什么.您需要的一切都应该在您的平台上的dlopen手册页中.
大多数系统在适当的位置都有这些库,并且会自动找到.
STL的其余部分不会引入额外的共享库依赖项.
在最近的MinGW gcc/g ++版本(4.40)中,您可以使用标志-shared-libstdc ++链接共享dll而不是默认静态库.
该库的静态版本位于/ mingw/lib/gcc/mingw32/[gcc版本]中.文件名是libstdc ++.在使用MinGW编译c ++应用程序时,默认情况下将链接此链接.