修改UDT代码同时支持linux及windows下编译

30 篇文章 4 订阅
21 篇文章 1 订阅

修改UDT代码同时支持linux及windows下编译

一、注意点

  1. 要灵活运用宏定义,来区分linux及windows下的不同内容。尤其要注意,#ifdef#ifndef的区别,#ifdefif define的缩写,而#ifndefif not define的缩写。举例说明。

    #ifdef WIN32   //指的是当可以运行windows架构时
    #ifndef WIN32   //指的是当不可以运行windows架构时
    
  2. 在linux和windows中关于网络编程所调用的函数库是不同的。具体如下:

    #ifndef WIN32 //linux架构下调用的内容
    	#include <sys/types.h>
    	#include <sys/socket.h>
    	#include <netinet/in.h>
    	#include <netdb.h>
    #else //window架构下调用的内容
    	#ifdef __MINGW__
    	  	#include <stdint.h>
      		#include <ws2tcpip.h>
    	#endif
    	#include <windows.h>
    #endif
    

二、修改内容

  1. 修改.pro文件。修改当windows架构时,添加第三方库

    win32 {
    	LIBS += -lwsock32
    	LIBS += -lws2_32
    }	
    
  2. 修改common.h文件。pthread_t定义的句柄。原来是

    #ifdef WIN32
      // Windows compability
      typedef HANDLE pthread_t;
      typedef HANDLE pthread_mutex_t;
      typedef HANDLE pthread_cond_t;
      typedef DWORD pthread_key_t;
    #endif
    

    修改为:

    #ifdef WIN32
      // Windows compability
      typedef HANDLE pthread_t_udt;
      typedef HANDLE pthread_mutex_t;
      typedef HANDLE pthread_cond_t;
      typedef DWORD pthread_key_t_udt;
    #endif
    
  3. 修改api.h文件。原来是

    pthread_t m_GCThread;
    #ifndef WIN32
      static void* garbageCollect(void*);
    #else
      static DWORD WINAPI garbageCollect(LPVOID);
    #endif
    

    修改为:

    #ifndef WIN32
      static void* garbageCollect(void*);
      pthread_t m_GCThread;
    #else
      static DWORD WINAPI garbageCollect(LPVOID);
      pthread_t_udt m_GCThread;
    #endif
    
  4. 修改queue.h文件。原来为

    #ifndef WIN32
      static void* worker(void* param);
    #else
      static DWORD WINAPI worker(LPVOID param);
    #endif
    pthread_t m_WorkerThread;
    

    修改为:

    #ifndef WIN32
      static void* worker(void* param);
      pthread_t m_WorkerThread;
    #else
      static DWORD WINAPI worker(LPVOID param);
      pthread_t_udt m_WorkerThread;
    #endif
    

    注意,在这个头文件中,有两处一模一样的需要修改的内容,即上述内容。

  5. 修改udt.h文件。原来是

      #else
         #define UDT_API __declspec(dllimport)
      #endif
    

    修改为:

      #else
         #define UDT_API
      #endif
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼月半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值