在Qt5和mingw32中使用ACE_wrappers

1.利用MSYS2编译ACE

1.1配置MSYS2的环境

下载msys2:http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe

安装和打开msys2 不要选下面的"Mingw-w64 32 bit"和"Mingw-w64 64 bit"

添加Qt5自带的mingw32路径(D:\Qt\Qt5.11.1\Tools\mingw530_32\bin)

export PATH=${PATH}:/d/Qt/Qt5.11.1/Tools/mingw530_32/bin

2.编译ACE_wrappers

按常规编译方法即可

3.Qt的.pro文件

在Qt的.pro文件中加入以下的配置信息(不添加宏定义ACE_DOESNT_DEFINE_MAIN会出现"redefined main"的告警!):

win32:ACE_ROOT = D:\ACE
win32:INCLUDEPATH += $$ACE_ROOT\include
win32:DEFINES += ACE_AS_STATIC_LIBS
win32:DEFINES += ACE_DOESNT_DEFINE_MAIN
win32:LIBS += $$ACE_ROOT\lib\libACE.a -lws2_32 -lmswsock -liphlpapi -lwsock32 -lnetapi32

另外在调用的地方加入ACE::init()和ACE::fini()。由于添加了宏定义ACE_DOESNT_DEFINE_MAIN会出现"WSA Startup not initialized"的错误提示!而且服务器不能监听。

#ifndef _SCK_SERVER_H
#define _SCK_SERVER_H

#include <ace/Init_ACE.h>

class Sck_Server
{
public:
    Sck_Server()
    {
        ACE::init();
    }
   ~Sck_Server()
    {
        ACE::fini();
    }
    int start() const;
    void stop() const;
};

#endif /* _SCK_SERVER_H */

猜你喜欢

转载自blog.csdn.net/kimfeng/article/details/81807664