gpt4 book ai didi

c++ - 链接到静态库时的多个函数调用

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:04 25 4
gpt4 key购买 nike

在我的 C++ 项目中,我多次调用静态库中的函数,所以我想知道链接器是否只复制该函数一次,或者每次在源代码中调用它时。

最佳答案

链接器将每个使用的函数复制一次。

为了让简短的回答变长,我将解释:

链接DLL或共享库时,没有拷贝,你的程序必须加载链接库或DLL到内存中,如果它还没有加载,并从中调用函数,静态库是不同的,因为没有依赖运行时,因此每个使用的函数都被复制到可执行文件中。

有一个异常(exception),inline 函数可以为每次使用复制,但不是作为函数而是作为代码复制。函数代码(或多或少)被复制到您的代码调用该函数的位置。它由编译器完成,而不是由链接器完成。

inline 函数是有保证的,这就像是对编译器的推荐。当您将函数声明为内联时,您通常将代码放在头文件中。编译器也可能决定一个函数是内联,即使没有声明,作为一种优化,它可能发生在函数非常短的地方。

所以结论是链接静态库时,函数只被复制一次到可执行文件中。

关于c++ - 链接到静态库时的多个函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28850562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com