gpt4 book ai didi

c++ - 将对象转换为 dlsym 返回的地址

转载 作者:行者123 更新时间:2023-11-30 20:08:44 25 4
gpt4 key购买 nike

我正在从共享对象 (a.so) 调用函数。我使用 dlopen 加载 a.so 并使用 dlsym 加载映射函数。

    int (*funcPtr)() = reinterpret_cast<int(*)()>(dlsym(some symbol..));

我的问题是,如果 funcPtr 的输入变量包含“this”,那么我该如何转换它?

预期功能

    int func(*this, int,int,int,int)

我正在尝试将其转换为这样

    class test
{

};

int (*funcPtr)(*test, int,int,int,int) = reinterpret_cast<int(*)(*test,int,int,int,int)>(dlsym(some symbol..));

最佳答案

My question is if my input variables for funcPtr contains a [pointer to a class object], how do i cast it then?

以完全相同的方式,除了参数列表中有指针:

void* addr = dlsym(some symbol..);
int (*funcPtr)(test*) = reinterpret_cast<int(*)(test*)>(addr);

或者用别名更漂亮一点:

using func = int(test*);
func* funcPtr = reinterpret_cast<func*>(addr);

为了执行此转换,必须声明该类。它不需要被定义。您可以像这样声明一个类:

class test;

关于c++ - 将对象转换为 dlsym 返回的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com