为什么加inline就说是无法解析的外部符号了

毕业设计工坊 论文问答 1

有一个静态库,里面中有一个类成员函数的定义中加上inline,可以编译通过,生成一个静态库,但是引用这个库的程序编译时总是报告这些加上inline的成员函数是无法解析的外部符号(去掉inline后两个项目都重新编译是可以的),为什么呢?我想但是我想将那些函数定义成inline怎么做呢?

回复

共2条回复 我来回复
  • 毕设工厂
    这个人很懒,什么都没有留下~
    评论

    所谓inline,就是编译器实际不产生函数和函数调用,而是将函数实现直接内嵌在调用的代码处。 既然如此,在你的静态库中定义一个inline函数,又要调用者看见它怎么可能呢? C++编译器只能将源代码嵌入,而没办法从外部库中将机器代码嵌入。

    0条评论
  • 毕设导航
    这个人很懒,什么都没有留下~
    评论

    inline,编译器可能会进行函数内联,也就是直接展开这个函数的代码,因而就没有这个函数名称了,对外来说,调用就找不到这个函数实现了。所以你需要导出的函数不应该进行内联。

    0条评论

发表回复

登录后才能评论