純C 動態庫生成

2022-07-07 20:12:17 字數 3591 閱讀 6640

目錄

眾所周知,我們可以將c++專案中的類以及函式匯出,形成 .dll 檔案,以供其他程式使用,下面將說明qt環境下的使用方法。

首先建立共享庫,步驟如下:

下一步會出現類對話方塊等等,不用管它,直接點選建立即可,稍後再將類都刪了。

建立好以後你會發現有乙個包含global的標頭檔案,這個檔案中定義了__declspec(dllexport)、__declspec(dllimport)等,也可以刪掉(如果要按照下面的方法的話,刪掉即可)。

接下來還有重要的一步,請在.pro檔案中,加入

config += dll  // 即使你的**中寫成了 config += staticlib,也要改過來
接下來就開始我們具體的的建立方法吧!

按照匯出dll的的操作劃分,有兩種模式:

首先是標頭檔案內容:

標頭檔案:

在方法宣告時,前面加上__declspec(dllimport),也可用#define定義,看**:

//為了和將來用到的程式中公用乙個標頭檔案,建立dll時用到的是__declspec(dllexport),而使用dll時用到__declspec(dllimport),完全可以各自寫一下

#define testdllshared_export __declspec(dllexport)

#ifdef testdllshared_export

#else

#define testdllshared_export __declspec(dllimport)

#endif

//下面我要定義4個普通函式:

testdllshared_export int test1();

testdllshared_export int test2(void);

testdllshared_export int test3(int a);

testdllshared_export int test4(int a,int b);

然後在對應的cpp原始檔中實現test1、test2、test3、test4這幾個方法(為了簡單,我只輸出了一句話):

.cpp原始檔:

//記得加上上面的標頭檔案

//記得加上iostream標頭檔案,不然cout不能用

int test1()

對於類的話,建立時:在class的後面,類名的前面加上定義的__declspec(dllexport);使用時,換成__declspec(dllimport),也可以參照前面的#define條件定義法。舉例:

#define hptickdllshared_export __declspec(dllexport)

#ifdef hptickdllshared_export

#else

#define hptickdllshared_export __declspec(dllimport)

#endif

class hptickdllshared_export hptickdll //我在這裡定義了類hptickdll

;

靜態呼叫的方法和普通函式一樣,直接可以使用類及其成員函式(別忘了新增標頭檔案),就不細說了。

眾所周知,我們可以將c++專案中的類以及函式匯出,形成 .dll 檔案,以供其他程式使用,下面將說明qt環境下的使用方法。

首先建立共享庫,步驟如下:

下一步會出現類對話方塊等等,不用管它,直接點選建立即可,稍後再將類都刪了。

建立好以後你會發現有乙個包含global的標頭檔案,這個檔案中定義了__declspec(dllexport)、__declspec(dllimport)等,也可以刪掉(如果要按照下面的方法的話,刪掉即可)。

接下來還有重要的一步,請在.pro檔案中,加入

config += dll  // 即使你的**中寫成了 config += staticlib,也要改過來
接下來就開始我們具體的的建立方法吧!

按照匯出dll的的操作劃分,有兩種模式:

首先是標頭檔案內容:

標頭檔案:

在方法宣告時,前面加上__declspec(dllimport),也可用#define定義,看**:

//為了和將來用到的程式中公用乙個標頭檔案,建立dll時用到的是__declspec(dllexport),而使用dll時用到__declspec(dllimport),完全可以各自寫一下

#define testdllshared_export __declspec(dllexport)

#ifdef testdllshared_export

#else

#define testdllshared_export __declspec(dllimport)

#endif

//下面我要定義4個普通函式:

testdllshared_export int test1();

testdllshared_export int test2(void);

testdllshared_export int test3(int a);

testdllshared_export int test4(int a,int b);

然後在對應的cpp原始檔中實現test1、test2、test3、test4這幾個方法(為了簡單,我只輸出了一句話):

.cpp原始檔:

//記得加上上面的標頭檔案

//記得加上iostream標頭檔案,不然cout不能用

int test1()

對於類的話,建立時:在class的後面,類名的前面加上定義的__declspec(dllexport);使用時,換成__declspec(dllimport),也可以參照前面的#define條件定義法。舉例:

#define hptickdllshared_export __declspec(dllexport)

#ifdef hptickdllshared_export

#else

#define hptickdllshared_export __declspec(dllimport)

#endif

class hptickdllshared_export hptickdll //我在這裡定義了類hptickdll

;

靜態呼叫的方法和普通函式一樣,直接可以使用類及其成員函式(別忘了新增標頭檔案),就不細說了。

C 生成 呼叫動態鏈結庫

一 需求描述 1 用 生成動態鏈結庫 2 用c 呼叫動態鏈結庫 二 生成動態鏈結庫 1 新建類庫 2 新增welcomeinfo類 如下 僅供測試用,例子很簡單 1 using system 2using system.collections.generic 3using system.linq 4...

cmake 生成 動態庫

一,目錄結構 cmakelists.txt include shared hello.h src hello.cpp main.cpp link cmakelists.txt contains the cmake commands you wish to run link include share...

Go 生成C動態庫 so和靜態庫 a

package main import c import fmt export hello func hello export add func add a,b int int func main 注意 生成c可呼叫的so時,go源 需要以下幾個注意。必須匯入 c 包 必須在可外部呼叫的函式前加上 ...