相关疑难解决方法(0)

如何找出从共享对象导出的所有符号?

我有一个共享对象(DLL).如何找出从中导出的所有符号?

linux shared-libraries

123
推荐指数
7
解决办法
16万
查看次数

readelf vs. objdump:为什么两者都需要

我需要了解我正在处理的项目的ELF文件布局,并且我注意到这些工具的存在.为什么所有Linux发行版都包含readelf和objdump?这些工具是否相互补充?我什么时候更愿意使用另一个?

linux elf objdump readelf

37
推荐指数
1
解决办法
1万
查看次数

使用ctypes从dll列出导出的函数

有没有办法知道从dllpython外部函数库导出哪些函数ctypes

如果可能的话,通过c了解有关导出函数的详细信息types.

如果是,有人可以提供一小段代码吗?

python dll ctypes shared-libraries

35
推荐指数
5
解决办法
3万
查看次数

如何查看Linux .so或.a对象并查看它们包含哪些函数?

链接器可能会这样做,所以是否有一个命令行工具列出目标文件中的函数并告诉我函数及其签名的名称?

c c++ unix static-libraries

5
推荐指数
2
解决办法
1614
查看次数

通过指向错误函数类型的指针来调用函数(未知)

我有一个可以动态链接到库的程序。该程序将函数指针传递到该库以执行。

但是ubsan(未定义的行为清理器)指定指针位于错误的函数类型上。那只会发生

  • 如果回调函数具有一个类作为参数
  • 如果回调函数具有一个类作为参数,但仅向前声明
  • 如果指定编译标志:-fvisibility = hidden。

我用clang编译我的项目。

它是clang未定义行为消毒器中的错误吗?

以下代码简化为一个简单的测试用例。查看评论,看看我们可以采取行动删除一些警告

该应用程序的代码:

Main.cxx

#include "Caller.h"
#include "Param.h"

static void FctVoid()
{
}
static void FctInt(int _param)
{
   static_cast<void>(&_param);
}
static void FctCaller(Caller &_caller)
{
   static_cast<void>(&_caller);
}
static void FctParam(Param const &_param)
{
   static_cast<void>(&_param);
}

int main()
{
   Param param;
   Caller::CallVoid(&FctVoid);
   Caller::CallInt(&FctInt);
   Caller::CallThis(&FctCaller);
   Caller::CallParam(&FctParam, param);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

库文件的代码为:

Caller.cxx:

#include "Caller.h"
// To uncomment to fix one warning
//#include "Param.h"
void Caller::CallVoid(FctVoidT _fct)
{
   _fct();
}
void Caller::CallInt(FctIntT _fct)
{
   _fct(32); …
Run Code Online (Sandbox Code Playgroud)

c++ pointers undefined-behavior ubsan

5
推荐指数
1
解决办法
391
查看次数