天天看點

c語言調用c語言的so動态庫

1.環境 

ubuntu14.o4  

gcc 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)源碼

//cclTest.c
#include <stdio.h>
#include <dlfcn.h>

int main(void) {
	int(*myadd)(int a, int b);
	void *handle;
	handle = dlopen("./libclTest.so", RTLD_LAZY);
	myadd = dlsym(handle, "add");

	int result = myadd(1, 2);

	dlclose(handle);

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

2)編譯成可執行檔案

cd到cclTest.c所在目錄,輸入指令

gcc -o cclTest cclTest.c -ldl
           

生成可執行檔案cclTest

4.執行

cd到可執行檔案cclTest所在目錄

輸入指令

./cclTest