开发者社区> 问答> 正文

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

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

展开
收起
a123456678 2016-03-05 16:23:32 2926 0
1 条回答
写回答
取消 提交回答
  • inline,编译器可能会进行函数内联,也就是直接展开这个函数的代码,因而就没有这个函数名称了,对外来说,调用就找不到这个函数实现了。所以你需要导出的函数不应该进行内联
    在vs跟g++下编译inline实际上是有区别的 最佳答案描述的没错 但是若G++不能连接而VS可以的话 可能是另一个原因引起的
    就是inline的定义跟实现分离了。。这是vs跟gcc在编译时的索引方式不同导致的

    2019-07-17 18:53:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像