首页 > c/c++的标准库在连接的时候是静态连接还是动态连接?

c/c++的标准库在连接的时候是静态连接还是动态连接?

include <iostream>

include <string>

include <cstdio>

这些头文件对应的库在连接到我们的应用程序的时候是动态连接进来的还是静态连接进来的?


前两个是静态链接,第三个是动态链接。


先说明,不管模板内部的实现调用了什么依赖库,模板生成的代码本身是静态链接的,因为模板的目标代码都是当时编译器即时生成的,所以前两个文件都是静态链接的,依赖的东西可能存在于libstdc++(libc++或者其它)当中,这一部分是动态链接的
第三个文件大部分东西都是C里面的标准IO之类的东西,这些东西存在于libc当中,
即是动态链接了。。


优先动态链接,在linux下你可以ldd查看下依赖哪些动态库,如果有动态库的话说明没有把静态库链接进去


可静态可动态。你可以检查一下项目的编译和链接设置。例如,你可以在VC++中选择“多线程静态库”或者“多线程DLL”。


iostream和string都是模板的,所以实际上并没有静态和动态的区别。如果你用了cout、fopen等这样的符号,那么你就会需要静态来件,或者让对方安装Visual C++ 2015 Redistribution

【热门文章】
【热门文章】