C++ 编译器是否可以跨 DLL 内联方法调用?

Ost*_*tap 2 .net c++ compiler-construction jit

C++ 编译器是否可以跨 DLL 内联方法调用?.NET JIT 可能吗?

Han*_*ant 5

对于 .NET 抖动来说,这是肯定的。它只是从 DLL 加载 IL,即时代码生成使得它来自 DLL 的事实消失了。任何 DLL 中的所有代码都进入同一个加载器堆。这样做的后果之一是除非卸载整个 AppDomain,否则无法卸载 DLL。

对于 C++ 编译器来说,绝对不行,导出的函数经过预编译并位于固定地址(相对于 DLL 基地址的偏移量)。尽管可以进行优化,但仍需要通过 IAT 进行间接跳转。但不是内联,这必须由编译器完成。