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"
添加make程序
pacman -S make
添加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 */