c 呼叫c 的so動態庫2

2021-07-26 17:56:57 字數 971 閱讀 8277

1.環境 

ubuntu 14.04 

g++ 4.8.4

2.有類的情況

1)庫檔案

a)原始碼

class cal ;

typedef cal* (*creat_t)();

typedef void (*destroy_t)(cal*);

#include "cppl2.h"

cal::cal(){};

cal::~cal(){}

int cal::add(int a, int b)

//typedef cal* create_c();

//typedef void destroy_c(cal*);

extern "c" cal* create()

extern "c" void destroy(cal* c)

b)編譯成可執行檔案

cd到cppcppl2.cpp所在目錄,輸入命令

g++ -fpic -shared -o libcppl2.so cppl2.cpp
會在當前目錄生成檔案libcppl2.so

2)主程式

a)原始碼

#include #include #include "cppl2.h"

using namespace std;

int main()

b)編譯成可執行檔案

cd到cppcppl2.cpp所在目錄,輸入命令

g++ cppcppl2.cpp -o cppcppl2 -ldl

3)執行

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

輸入命令

./cppcppl2

c語言呼叫c語言的so動態庫

1.環境 ubuntu14.o4 gcc 4.8.4 2.庫檔案生成 1 原始碼 int add int a,int b 2 生成庫檔案 cd到cltest.c所在目錄,輸入命令 gcc shared o libcltest.so cltest.c會在當前目錄生成檔案libcltest.so 3.主...

php呼叫c語言編寫的so動態庫

php除了使用擴充套件庫的方式呼叫c函式,還可以通過socket通訊的方式。這裡介紹前者。1.先看本機是否已經安裝了較低版本的php find usr name php 或者rpm aq grep php 如果存在,就使用rpm命令等方式卸掉 2.php原始碼安裝,configure的引數如下 co...

php呼叫c語言編寫的so動態庫

php除了使用擴充套件庫的方式呼叫c函式,還可以通過socket通訊的方式。這裡介紹前者。1.先看本機是否已經安裝了較低版本的php find usr name php 或者rpm aq grep php 如果存在,就使用rpm命令等方式卸掉 2.php原始碼安裝,configure的引數如下 co...