C++ - 如何内联驻留在 .lib 中的函数?

标签 c++ compilation linker static-libraries inline

据我所知,不可能在 lib 文件中将函数声明为“内联”并将该函数“神奇地内联”到另一个项目的调用函数中(因为链接与编译不同,后者发生在之前)。

当有多个函数(在多个库中)具有相同的声明但不同的定义时,我如何内联一个函数?

例如

obj1.lib

void function1() { printf("Hi"); }

obj2.lib

void function1() {printf("whatsup?"); }

主要.cpp

void function1();

int main()
{
  function1(); // I'd like to be able to inline this, I can steer the linking against obj1 or obj2, but I can't inline this one
}

最佳答案

要从对象(或库)文件中内联一个函数,您需要用link-time optimization (LTO) 编译该对象文件。 .参见 Inlining functions from object files了解更多详情。

关于C++ - 如何内联驻留在 .lib 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685950/

相关文章:

c++ - 如何让我的类(class)与 std::string operator+ 一起工作

c++ - boost 序列化和命名空间

c++ - 长度为 k 的递增子序列数

java - 如何将编译后的类名与 Java 中的枚举成员匹配?

c++ - OpenMP:减少和共享

java - 数组变量的错误

c - 更新后我的arduino将无法编译草图

c - 链接器警告,将 .stack 节的开头更改 4 个字节

c++ - 为什么(成员)函数指针在 Visual C++ 中表现得如此怪异?

swift - 在 Obj-C/Swift 项目中使用 CocoaLumberjack 时出现 undefined symbol 错误