![]() |
1
2
除非您为基类中的纯虚拟函数编写定义,否则您不会看到它们的任何符号,因为编译器不可能为不存在的定义输出任何符号。 除非您调用它们,否则您也不会在派生类中看到任何重写的定义,并且可能只有在您调用它们并在没有优化的情况下进行编译时才会看到这些定义。
这是因为它们被定义为内联函数(因为您在类主体中定义了它们),所以根据C++标准中的[dcl.fct.spec]/4,编译器知道其他对象文件中这些函数的任何其他调用方也可以看到函数定义,因此在编译时不需要发出外部符号
如果要确保编译器输出这些函数的定义,则不要将它们定义为内联函数。或者,如果库中有构建
|
![]() |
asendjasni · 在C中使用静态库 7 年前 |
![]() |
Maneesh M · 如何在iOS应用程序中集成Atom支付网关? 7 年前 |
![]() |
ImgPrcSng · 静态库中的符号可见性和操纵 7 年前 |
![]() |
fionbio · 如何在iOS中链接protobufs 7 年前 |
![]() |
PS_dev · 在目标C项目的静态库中获取框架头文件未找到错误 7 年前 |