我编译了一个.hpp
和.cpp
文件,编译器标志为-fvisibility=hidden
,带有GCC / Clang
奇怪的是,尽管如此,我宣布-fvisibility=hidden
,我的整个库中未使用的以下函数显示在我的共享对象文件中:
A.hpp
double f();
template<typename T> T functionT();
A.cpp
double f(){ /* some definition */ }
template<> double functionT<double>(){ return f(); }
但是,如果我将完整的专用functionT
声明为inline
并将其移至头文件,则在共享对象文件.so
中不再可见。
有人知道吗,我做错了什么?