外贸做网站的好处,免费的个人网站空间,开发工具在哪里,温州网站公司//环境 linux c
//生成动态链接库
//然后调用动态链接库中的函数//出现的问题以及解决//注意在win和在linux中调用动态链接库的函数是不一样的//在要生成链接库的cpp文件中比如以后要调用本文件中的某个函数#xff0c;需要extern c 把你定的函数“再封装”避免重…//环境 linux c
//生成动态链接库
//然后调用动态链接库中的函数//出现的问题以及解决//注意在win和在linux中调用动态链接库的函数是不一样的//在要生成链接库的cpp文件中比如以后要调用本文件中的某个函数需要extern c 把你定的函数“再封装”避免重载出现的一些问题//举个实例吧
extern c void sum(int x, double y);void sum(int x, double y){std::cout(int) x ystd::endl;
}
#生成动态链接库libxxx.so 注意哈 在链接的时候g 会把链接为libxxx.so-- lxxx 不好描述
g -fPIC -shared xxx.cpp -o libxxx.so#include dlfcn.htypedef bool (*Function)(int, double);
Function exFunction NULL;//类似初始化void* libHandle dlopen(./lxxx.so, RTLD_LAZY);//这里还要做判断是否初始化成功exFunction (Function )(dlsym(libHandle, sum));//调用链接库中的函数
exFunction (4, 5.5);//释放资源
dlclose(libHandle);#当重载多个函数可能自己弄晕了可以用下面的命令去找生成动态链接库后你的那个sum函数的函数符是什么也就是说
#exFunction (Function )(dlsym(libHandle, sum));中的sum 就是下面命令的输出结果
nm -D libext_curl.so | grep sum参照如下 在这里插入图片描述 像第一个结果如果我填入的是dlsym(libHandle, “GET”)会报错 如果这样写dlsym(libHandle, “Z3GETRSsS”)执行成功