在C++共享对象文件中找到完整的函数定义

avd*_*avd 8 c++ linux compiler-errors shared-libraries linker-errors

我有一个链接器错误,它表示对函数的未定义引用.我期望函数的共享库具有该函数名称(我通过nm -s检查)所以现在接下来要看的是函数参数是否正确.如何在共享对象文件中查看函数的参数类型和数量?

编辑:所以它的问题是:我试图通过链接共享的C对象来创建一个C++共享对象文件,但是在C++源代码中我没有在"extern"C""块中包含头文件,所以它无法找到那些符号,感谢所有回复此问题的人.这个问题现在解决了.

jua*_*nza 8

您可以使用nm--demangle选项:

nm -s --demangle libWhatever.so
Run Code Online (Sandbox Code Playgroud)

试试样品.so给我输出如

00005820 T detail :: print_(std :: ostream&,cv :: Mat const&,std :: string const&)

T只是意味着它在用于制作的目标文件中,.so并且不需要由链接器解析.


tma*_*ric 2

尝试对损坏的名称执行 c++filt。它将解开它,您可以看到参数。