关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

c++中调用c语言里的so动态库的方法是什么

发布时间:2020-01-18 16:59:23

1.环境 

ubuntu14.04  

gcc 4.8.4

g++ 4.8.4

2.库文件

1)源码


//clTest.c  

int add(int a, int b) {  

    return a + b;  


2)生成库文件

cd到clTest.c所在目录,输入命令


gcc -shared -o libclTest.so clTest.c


会在当前目录生成文件libclTest.so

3.主程序

1)源码


//cppclTest.c

#include <stdio.h>

#include <dlfcn.h>

using namespace std;

int main() {

typedef int(*t_add)(int a, int b);

void *handle;

handle = dlopen("./libclTest.so", RTLD_LAZY);

t_add myadd = (t_add)dlsym(handle, "add");

int result = myadd(1, 2);

dlclose(handle);

printf("%d\n", result);

}


2)编译成可执行文件

cd到cppclTest.cpp所在目录,输入命令


g++ cppclTest.cpp -o cppclTest -ldl


生成可执行文件cppclTest

4.执行

cd到可执行文件cppclTest所在目录

输入命令


./cppclTest



/template/Home/Zkeys/PC/Static