β

gcc下动态调用C++动态库非静态类成员函数

小超的漏雨茅屋 453 阅读
C++

gcc C语言下动态调用动态库函数通过使用libdl来实现:

#include <dlfcn.h>
 
typedef void (*func_t) (int);
 
int main () {
   void *handle = dlopen ("/usr/libtest.so", 0);
   func_t func = (func_t) dlsym ("FunctionName");
   func (0);
}

dlsym 会将对应符号解析为函数指针。一般都应用在C函数的解析,对于某对象的非静态成员函数,又能怎么办呢?
C++的符号也许会被编译成 _ZN9KClassNameD4TestDv ,符号虽复杂,但在gcc的编译下,是一定的,用dlsym解析出来后,同样是一个函数指针,不过它的第一个参数,必须传递”ClassName”对象的一个this指针。

No related posts.

C++
作者:小超的漏雨茅屋
身正不怕影子斜
原文地址:gcc下动态调用C++动态库非静态类成员函数, 感谢原作者分享。

发表评论