int dev_func(char dev_func_name[]) { int res; void *handle; int (*func)(); char *error; handle = dlopen(dev_lib_path, RTLD_LAZY); if(!handle) { LOG(m_event, ERROR, "%s\n", dlerror()); return FAIL; } func = dlsym(handle, dev_func_name); if((error = dlerror()) != NULL) { LOG(m_event, ERROR, "%s\n", error); dlclose(handle); ...
by WHITLACK - C/C++ - 2009-02-19 01:01:41 阅读(4663) 回复(2)
我在.so中有这两个函数: extern "C" { Progress * createInstance() { return new Prog_A; } void destroyInstance(Progress * p) { delete p; } } 然后用Create_t * pfCreate = (Create_t *)dlsym(dp,"createInstance");调用,可是却报函数未实现。这是为什么呢?
使用dlsym可以调用so里面定义的函数,但是我想调用类里面的成员函数怎么办阿? 例如,在so里面有print的函数,我可以使用dlsym(handle,"print")得到这个函数指针, 但是,我定义了class A 里面有个A.print函数,我怎么用dlsym来得到这个函数指针阿?
声明了一个如下类型的函数指针 [code]int (*cmd)(arg1,arg2);[/code] 程序我是这样写的: [code] dp=dlopen(...); cmd=dlsym(dp,“cmd”); [/code] 用g++编译返回错误是: [code] invalid conversion from `void*' to `int (*)(arg1, arg2)' [/code] c++里边应该怎么进行这样的转换?
rt.我的对象定义和实现都在动态库中。通过dlsym调用其中的对象构造方法创建了对象,之后能否就dlclose()并继续使用对象?还是说一直要等对象销毁后才能dlclose()?
学习使用dlopen等函数动态加载函数,测试程序如下:
#include
**testlib.cpp文件
#include
编译没有问题,运行时报错,该怎么解决啊?是什么原因啊?我的系统是unixware,定位是在建立socket连接收数据时报错 dynamic linker: pniAlmSub: dlsym: cannot find symbol: _rs__is_res_use_inet6 Killed
在sco openserver下面看dlsym的man帮助,里面的例程如下: void *handle; int i, *iptr; int (*fptr)(int); /* open the needed object */ handle = dlopen("/usr/mydir/libx.so", RTLD_LAZY); /* find address of function and data objects */ fptr = (int (*)(int))dlsym(handle, "some_function"); iptr = (int *)dlsym(handle, "int_object"); //??? /* invoke function, passing value ...