在共享对象文件中查找完整的函数定义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::p rint_(std::ostream&, cv::Mat const&, std::string const&)
T
仅表示它位于用于进行.so
的对象文件中,不需要由链接器解析。
你可能想要:
nm --demangle --defined-only --dynamic x.so
上面的名称C++解散,并在动态部分中仅显示定义的符号,动态部分是具有外部链接的定义符号,可以链接。
尝试在损坏的名称上执行 c++filt。它将解开它,您可以看到参数。
所以问题来了:我试图通过链接共享 C 对象来创建一个C++共享对象文件,但在C++源中我没有在"extern "C"块中包含标题,因此它无法找到这些符号,感谢所有回答这个问题的人。这个问题现在已经解决了。
相关文章:
- 不同翻译单元中不可重载的非内联函数定义
- Visual Studio中的函数声明和函数定义问题
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 具有enable_if外部类原型的模板类构造函数定义
- 类的前向声明之后的类成员函数定义,在类声明之前
- 为函数定义符号不明确的指针参数
- C++模板专用化 - 无法匹配函数定义
- 错误:在第 6 行'{'标记之前,此处不允许使用函数定义
- 找不到 #define 的函数定义
- 根据类型特征更改函数定义?
- 将抽象基类中的所有纯虚函数定义为 varaidaic 模板
- 命名空间更改函数定义
- "Type&"与C++函数定义中的"Type*"
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 如何从 C++ 中的现有模板函数定义新函数
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- 为什么c++允许成员函数定义中实例的私有成员访问
- Qt基类函数定义
- C++函数定义中参数列表后面额外一对括号的含义