基於動態庫的C 外掛程式開發模型

2022-04-11 10:45:11 字數 1280 閱讀 1474

基類為抽象類,在不同的動態庫中實現不同的執行行為,但是每個動態庫要提供2個統一的方法:1) baseclass * create(); 2) void destroy( baseclass* );,呼叫該實際類的上下文,通過dlopen,dlsym( dl, "create"), dlsym( dl, "destroy")來獲得實際物件的控制代碼。實際上是一種工廠/builder模型。

1. 基類

#include class

baseclass ;

virtual ~baseclass(){};

};//

typedef baseclass* create_t();

typedef baseclass* (*create_t)();

typedef

void (*destroy_t)(baseclass*);

2. 繼承類

#include "

base.h

"#include

class a: public

baseclass

};//

the class factories

extern"c

" baseclass*create()

extern"c

"void destroy(baseclass*p)

編譯方法:

> g++ -g -fpic a.cpp

> g++ -g -shared -o liba.so a.o

3. 呼叫類

#include "base.h"

void *load_so(const

char*so_path)

return

dl;}

int test_so(void *dl)

create_t create_func = (create_t) dlsym(dl, "

create");

destroy_t destroy_func = (destroy_t) dlsym(dl, "

destroy");

if (!create_func || !destroy_func)

baseclass* base =create_func();

base->test();

destroy_func(

base

); dlclose(dl);

return0;

}int main()

基於jQuery 的外掛程式開發

談到jquery,對於開發人員是再熟悉不過了,從其誕生發展到到目前,一路走來,歷經風雨變化十幾載,依舊是開發人員使用最廣泛 最常用 也是最成熟的js庫。但其再成熟也不可能開發出所有的功能,於是乎就用了外掛程式這麼一說,用來拓展和補充jquery 的功能。外掛程式開發最常用的兩種方法 1.擴充套件 j...

模型驅動開發 基本模型 外掛程式模型的開發方法

任何乙個複雜的系統都應該存在簡單的規則,可以使用一些基本元素組合構建而成。這樣的系統在數學上被認為是簡潔和優美的。這一點在軟體中最容易歸納出來。人們也一直試圖找出一種簡潔方便方法和系統來構建軟體。軟體的乙個特性是相似性。我們寫過大量 後會發現 很多 都有相當程度的相似性。我們每個人每天只是重複寫其他...

模型驅動開發 基本模型 外掛程式模型的開發方法

任何乙個複雜的系統都應該存在簡單的規則,可以使用一些基本元素組合構建而成。這樣的系統在數學上被認為是簡潔和優美的。這一點在軟體中最容易歸納出來。人們也一直試圖找出一種簡潔方便方法和系統來構建軟體。軟體的乙個特性是相似性。我們寫過大量 後會發現 很多 都有相當程度的相似性。我們每個人每天只是重複寫其他...