问题描述: 编译出来的预测库发现找不到符号,但是相关源文件的确编译到库里了。
定位问题: cmake配置中打开了以下开关:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
`-fvisibility=hidden`开关的作用,将编译 出的库文件中的全局变量符号默认隐藏,防止其他程序调用库文件时出现重定义。也可以降低库文件体积。
导致的问题,我们新注册的接口已经编译到库文件中,但是却查询不到,undefination
解决方法:在对应cc文件中的接口定义处加上`可视化标记`: `__attribute__((visibility("default")))`
// 原始代码,库文件中查询不到
ImagePreprocess::ImagePreprocess(ImageFormat srcFormat, ImagePreprocess::ImagePreprocess(ImageFormat srcFormat,
ImageFormat dstFormat, ImageFormat dstFormat,
TransParam param) { TransParam param) {
this->srcFormat_ = srcFormat; this->srcFormat_ = srcFormat;
this->dstFormat_ =