zoukankan      html  css  js  c++  java
  • 动态库封装参考模板

      1 #include "stdio.h"
      2 #include "stdlib.h"
      3 #include "string.h"
      4 //VS2012 动态库 第一套模板
      5 typedef struct _SCK_HANDLE {
      6     char    version[16];
      7     char    serverip[16];
      8     int        serverport;
      9     char    *pBuf;
     10     int        buflen;
     11 }SCK_HANDLE;
     12 
     13 //------------------第一套api接口---Begin--------------------------------//
     14     //客户端初始化 获取handle上下文
     15 __declspec(dllexport) //加这个才能导出lib
     16 int cltSocketInit(void **handle /*out*/)
     17 {
     18     int ret = 0;
     19     SCK_HANDLE *sh = NULL;
     20     sh = (SCK_HANDLE *)malloc(sizeof(SCK_HANDLE));
     21     if(sh == NULL)
     22     {
     23         ret = -1;
     24         //打印日志
     25         printf("func cltSocketInit() err:%d", ret);
     26         return ret;
     27     }
     28     strcpy(sh->version, "1.0.0");
     29     strcpy(sh->serverip, "192.168.0.100");
     30     sh->serverport = 8080;
     31     *handle = sh;
     32     return 0;
     33 }
     34 
     35 //客户端发报文
     36 __declspec(dllexport)
     37 int cltSocketSend(void *handle /*in*/, unsigned char *buf /*in*/,  int buflen /*in*/)
     38 {
     39     int ret = 0;
     40     SCK_HANDLE *sh = NULL;
     41     if(handle == NULL || buf == NULL || buflen > 33333333333)
     42     {
     43         ret = -1;
     44         printf("func cltSocketSend() err:%d", ret);
     45         return ret;
     46     }
     47     sh = (SCK_HANDLE *)handle;
     48     sh->pBuf = (char *)malloc(buflen * sizeof(char));
     49     if(sh->pBuf == NULL)
     50     {
     51         ret = -1;
     52         printf("func cltSocketSend() malloc err, buflen:%d", buflen);
     53         return ret;
     54     }
     55     memcpy(sh->pBuf, buf, buflen);
     56     sh->buflen = buflen;
     57 
     58     return ret;
     59 }
     60 
     61 //客户端收报文
     62 __declspec(dllexport)
     63 int cltSocketRev(void *handle /*in*/, unsigned char *buf /*in*/, int *buflen /*in out*/)
     64 {
     65     int ret = 0;
     66     SCK_HANDLE *sh = NULL;
     67     if(handle == NULL || buf == NULL || buflen == NULL)
     68     {
     69         ret = -1;
     70         printf("func cltSocketRev() err:%d", ret);
     71         return ret;
     72     }
     73     sh = (SCK_HANDLE *)handle;
     74     
     75     memcpy(buf, sh->pBuf, sh->buflen);
     76     *buflen = sh->buflen;
     77     return ret;
     78 }
     79 
     80 //客户端释放资源
     81 __declspec(dllexport)
     82 int cltSocketDestory(void *handle/*in*/)
     83 {
     84     int ret = 0;
     85     SCK_HANDLE *sh = NULL;
     86     if(handle == NULL)
     87     {
     88         ret = -1;
     89         printf("func cltSocketRev() err:%d", ret);
     90         return ret;
     91     }
     92     sh = (SCK_HANDLE *)handle;
     93 
     94     if(sh->pBuf != NULL)
     95     {
     96         free(sh->pBuf);
     97     }
     98     free(sh);
     99 
    100     return ret;
    101 }
  • 相关阅读:
    17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
    17.1.2 Replication Formats
    Setting the Master Configuration on the Slave
    17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment
    17.1.1.8 Setting Up Replication with Existing Data
    17.1.1.7 Setting Up Replication with New Master and Slaves
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files
    列出display的值,并说明它们的作用
    CSS设置DIV居中
    CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?
  • 原文地址:https://www.cnblogs.com/yongssu/p/4274715.html
Copyright © 2011-2022 走看看