如何封裝自己的動態庫應用案例

2021-07-23 04:22:58 字數 2723 閱讀 5818

一、生成dll檔案

1.建立乙個dll應用程式生成dll

2.新增mysocketclient.c檔案

3.生成mysocketclient.dll

4.會在相應目錄下生成mysocketclient.dll和mysocketclient.lib檔案

二、建立測試程式載入dll檔案

1.建立win32空專案並新增這兩個檔案

2.將生成的dll檔案和lib檔案拷到測試案例的相應目錄下

3.新增lib檔案名字

附錄:mysocketclient.c

#define _crt_secure_no_warnings

#include #include#include typedef struct sck_handle

sck_handle;

//客戶端初始化 獲取handle

__declspec(dllexport)

int cltsocketinit(void **handle/*out*/)

memset(hdl,0,sizeof(sck_handle));

//strcpy(hdl->version,"1.1");

strcpy(hdl->ip,"192.168.1.12");

hdl->port = 8088;

hdl->plen = 0;

*handle = hdl;

printf("cltsocketinit end\n");

return ret;

}//客戶端發報文

__declspec(dllexport)

int cltsocketsend(void *handle /*in*/,unsigned char *buf /*in*/, int buflen/*in*/ )

memset(hdl->p,0,sizeof(char)*buflen);

memcpy(hdl->p,buf,buflen);

hdl->plen = buflen;

return ret;

}//客戶端接收報文

__declspec(dllexport)

int cltsocketrecv(void *handle/*in*/,unsigned char *buf/*in*/, int *buflen/*out*/)

hdl = (sck_handle*)handle;

memcpy(buf,hdl->p,hdl->plen);

*buflen = hdl->plen;

return ret;

}//客戶端釋放資

__declspec(dllexport)

int cltsocketdestory(void*handle/*in*/)

if (hdl->p!=null)

return ret;

}

mysocketclientdll.h

#ifndef _inc_demo01_h

#define _inc_demo01_h

#ifdef __cplusplus

extern "c"

#endif

#endif

測試框架.c

#define _crt_secure_no_warnings

#include #include#include #include "socketclientdll.h"

int main()

//客戶端發報文

ret = cltsocketsend(handle /*in*/,buf /*in*/,buflen/*in*/ );

if (ret!=0)

//客戶端接收報文

ret = cltsocketrecv(handle/*in*/,out/*in*/, &outlen/*out*/);

if (ret!=0)

//客戶端釋放資

ret = cltsocketdestory(handle/*in*/);

if (ret!=0)

printf("out:%s\n",out);

system("pause");

return ret;

}

動態庫的封裝

以 add.c 為例 1.建立庫函式的原始檔 vim add.c 2.生成目標檔案 gcc c add.c fpic 3.生成動態庫 gcc add.o o libadd.so shared 備註 libadd.so lib是字首,add是庫的名字,so是字尾,代表是動態庫 4.建立呼叫庫函式的原始...

建立自己的封裝庫(三)

前面兩篇已經弄好了自己的封裝庫啦,可是都是2d的封裝,沒有3d的看起來炫酷,那麼接下來就給我們的封裝新增3d模型吧 先上張圖 先找到我們需要的原件的3d模型,推薦 只不過我通常都是大概對好了就行了 接下來基本上就搞定啦 3d檢視下可以幫助我們看一下布局,元件和元件之間會不會擋著了,就比如12864這...

python使用自己封裝的庫

我想做乙個隨機生成使用者資訊的工具庫 人名隨機,性別隨機,還有粉絲隨機。中國人名分姓和名,我用first name.txt存姓,用last name.txt存名 分別解析2個檔案,得到我們需要的資料,實現 ln path users cykj desktop last name.txt fn pat...