一、生成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...