1.環境
ubuntu 14.04
g++ 4.8.4
2.沒有類的情況
1)庫檔案
a)源碼
//cppl1.cpp
extern "C" int add(int a, int b) {
return a + b;
}
b) 生成庫檔案
cd到cppl1.cpp所在目錄,輸入指令
g++ -shared -o libcppl1.so cppl1.cpp
會在目前目錄生成檔案libcppl1.so
2)主程式
a)源碼
//cppcppl1.cpp
#include <stdio.h>
#include <dlfcn.h>
using namespace std;
int main() {
typedef int(*t_add)(int a, int b);
void *handle;
handle = dlopen("./libcppl1.so", RTLD_LAZY);
t_add myadd = (t_add)dlsym(handle, "add");
int result = myadd(1, 2);
dlclose(handle);
printf("%d\n", result);
}
b)編譯成可執行檔案
cd到cppcppl1.cpp所在目錄,輸入指令
g++ cppcppl1.cpp -o cppcppl1 -ldl
生成可執行檔案cppcppl1
4).執行
cd到可執行檔案cppcppl1所在目錄
輸入指令
./cppcppl1