繁体   English   中英

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

[英]Find the complete function definition inside C++ shared object file

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

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

您可以将nm--demangle选项一起使用:

nm -s --demangle libWhatever.so

试试样品.so给我输出如

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

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

尝试在受损名称上执行c ++ filt。 它会解开它,你可以看到参数。

你可能想要:

nm --demangle --defined-only --dynamic x.so

上面对C ++名称进行了解码,并且仅显示动态部分中定义的符号,这些符号是可以链接的外部链接的已定义符号。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM