C++ fvisibility=隐藏,但未隐藏完整的专用函数

C++ fvisibility=隐藏,但未隐藏完整的专用函数,c++,gcc,shared-libraries,clang,linkage,C++,Gcc,Shared Libraries,Clang,Linkage,我已经编译了一个.hpp和.cpp文件,其中使用GCC/Clang编译标志-fvisibility=hidden 奇怪的是,尽管我声明了-fvisibility=hidden,但在我的整个库中没有使用的以下函数显示在我的共享对象文件中: 在A.hpp中运行 double f(); template<typename T> T functionT(); 但是,如果我将完整的专用函数t声明为inline,并将其移动到头文件中,则它在共享对象文件中不再可见 有人知道我做错了什么吗?你确定

我已经编译了一个
.hpp
.cpp
文件,其中使用GCC/Clang编译标志
-fvisibility=hidden
奇怪的是,尽管我声明了
-fvisibility=hidden
,但在我的整个库中没有使用的以下函数显示在我的共享对象文件中:

A.hpp中运行

double f();
template<typename T> T functionT();
但是,如果我将完整的专用
函数t
声明为
inline
,并将其移动到头文件中,则它在共享对象文件
中不再可见


有人知道我做错了什么吗?

你确定它没有被标记为“弱”符号吗?它在nm命令的输出中被标记为T。你应该:向我们展示整个代码(可编译的源代码以及如何编译它)和nmjep的输出我想我应该这样做,稍后会添加这个
double f(){ /* some definition */ }   
template<> double functionT<double>(){ return f(); }