【发布时间】:2010-05-10 01:30:03
【问题描述】:
我知道,现代编译器不仅可以对内联定义的函数进行过程集成,还可以对驻留在目标文件中的函数进行过程集成。但是,当您针对共享库(尤其是 dll)编译程序时,这是否也是如此?粗略地说:如果需要,是否会将函数代码从 dll 复制到可执行文件中?
【问题讨论】:
我知道,现代编译器不仅可以对内联定义的函数进行过程集成,还可以对驻留在目标文件中的函数进行过程集成。但是,当您针对共享库(尤其是 dll)编译程序时,这是否也是如此?粗略地说:如果需要,是否会将函数代码从 dll 复制到可执行文件中?
【问题讨论】:
不,因为编译器没有构成这些函数的代码。
在 Windows 上,当你链接到一个动态库时,你通常会包含一个头文件和一个导入库的链接,它只包含加载动态库和获取你调用的函数的指针的代码(从技术上讲,你不需要'不需要导入库,也可以手动调用LoadLibrary()和朋友)。
由于编译器永远不会看到动态库本身的代码,它当然不能对代码进行内联扩展。
【讨论】: