linux下调用动态链接库so文件
来源:互联网 发布:微信mac版下载不了 编辑:程序博客网 时间:2024/05/07 17:03
这里用一个程序源码来说明:
#include <iostream>
#include <dlfcn.h>
using namespace std;
typedef int (*Func)(int); // 定义函数指针,用来接受so文件里的函数,so文件里的函数原型需要一个int参数,返回一个int值
void *FuncLib; // 存放动态链接库的句柄
char *pcError = NULL; // 存放错误码
int main(void)
{
int iRet = 0;
// 载入动态链接库,可用相对路径和绝对路径
FuncLib = dlopen("./libComDll.so", RTLD_LAZY);
// 获取错误信息
pcError = dlerror();
if (pcError)
{
cout<<"dlopen Error info:"<<pcError<<endl;
return -1;
}
// 用函数指针承接so文件里的函数,注意ComTest才是so文件源码里的函数名,生成so文件的时候会自动添加__Fi
Func func = (Func)dlsym(FuncLib, "ComTest__Fi");
pcError = dlerror();
if (pcError)
{
cout<<"dlsym Error info:"<<pcError<<endl;
return -1;
}
// 执行函数
iRet = (*func)(-5);
pcError = dlerror();
if (pcError)
{
cout<<"Func Error info:"<<pcError<<endl;
return -1;
}
cout<<"return value:"<<iRet<<endl;
// 关闭载入的动态链接库
iRet = dlclose(FuncLib);
pcError = dlerror();
if (iRet)
{
cout<<"dlclose Error info:"<<pcError<<endl;
return -1;
}
return 0;
}
注意事项:
1.在编译的时候要添加 -ldl,否则会报错。
- linux下调用动态链接库so文件
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下使用QT编写和调用动态链接库(.so文件)
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- Linux下gcc编译生成动态链接库*.so文件并调用它
- linux下libxml2应用--生成一个tree并且保存为xml文件
- Linux网络编程:1. Linux网络知识介绍
- 程序员健康
- ASP.NET如何进行性能优化问题2
- socket通信里用得比较多的是发送和接受函数
- linux下调用动态链接库so文件
- linux下生成动态链接库so文件
- malloc/free 和 new /delete 的区别
- CRC16原理及C程序源代码
- linux下查看so文件里的函数
- 我们究竟需要什么样的新闻?
- owl和rdf的区别
- STL第一课
- 面试中的笨答与妙答