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 阅读(4669) 回复(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来得到这个函数指针阿?
**testlib.cpp文件
#include
我现在有个主函数 main, main里面使用了一个我自己写的类 cdse_variable_list, 然后我这个main函数在运行中会动态打开一个运算库(dlopen,dlsym),也是我自己写的algorithm.so, 并调用里面的函数calculate,把一个cdse_variable_list对象传入,这个函数里面调用了这个类的各种方法,但是现在我发现就连调一下基本的cdse_variable_list::debug方法报错误:bin/cdse_bs: relocation error: batch_algorithm_3046964144.so: undefined ...
声明了一个如下类型的函数指针 [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
编译没有问题,运行时报错,该怎么解决啊?是什么原因啊?我的系统是unixware,定位是在建立socket连接收数据时报错 dynamic linker: pniAlmSub: dlsym: cannot find symbol: _rs__is_res_use_inet6 Killed