我需要了解我正在处理的项目的ELF文件布局,并且我注意到这些工具的存在.为什么所有Linux发行版都包含readelf和objdump?这些工具是否相互补充?我什么时候更愿意使用另一个?
有没有办法知道从dllpython外部函数库导出哪些函数ctypes?
如果可能的话,通过c了解有关导出函数的详细信息types.
如果是,有人可以提供一小段代码吗?
链接器可能会这样做,所以是否有一个命令行工具列出目标文件中的函数并告诉我函数及其签名的名称?
我有一个可以动态链接到库的程序。该程序将函数指针传递到该库以执行。
但是ubsan(未定义的行为清理器)指定指针位于错误的函数类型上。那只会发生
我用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)