c++ - Mingw+MSYS 中 libevent 的静态编译错误

标签 c++ c gcc mingw libevent

我已经编写了一个在 winxp 中扩展的 python 脚本,并编译了 mingw+msys。它将调用 libevent 库。我希望用户不要安装更多的库,所以我想静态编译它,但是有错误。以下是我编译安装libevent的过程:

​./configure -prefix=D:/libevent -enable-static
make
make install  

我写了两个 makefile,我得到了同样的错误。

libevent.a(buffer.o):In function 'evbuffer_read':undefined reference to 'WSARecv@28' 
libevent.a(buffer.o):In function 'evbuffer_write_iovec':undefined reference to 'WSASend@28' 
........................

这是生成文件:

生成文件 1

HEAD_PATH_FLAGS=-IC:/Python27/include -ID:/boost/include/boost-1_52 -ID:/libevent/include
LIB_PATH_FLAGS=-LD:/boost/lib -LD:/libevent/lib -LC:/Python27/libs
LIB_FLAGS=-lboost_python-mgw46-s-1_52 -Wl,Bstatic -levent -Wl,Bdynamic -lpython27 -lwsock32
SOURCE=test.o 
all:${SOURCE}
g++ ${HEAD_PATH_FLAGS} ${SOURCE} ${LIB_PATH_FLAG} ${LIB_FLAGS} -fPIC -shared -o test.dll

生成文件 2

HEAD_PATH_FLAGS=-IC:/Python27/include -ID:/boost/include/boost-1_52 -ID:/libevent/include
LIB_PATH_FLAGS=-LD:/boost/lib -LD:/libevent/lib -LC:/Python27/libs
LIB_FLAGS=-lboost_python-mgw46-s-1_52 -lpython27 -lwsock32
SOURCE=test.o D:/libevent/lib/libevent.a
all:${SOURCE}
g++ ${HEAD_PATH_FLAGS} ${SOURCE} ${LIB_PATH_FLAG} ${LIB_FLAGS} -fPIC -shared -o test.dll

为什么会这样?我如何才能正确编译它?

最佳答案

您应该链接到 libws2_32.a,因为那里定义了 WSASendWSARecv。将 -lws2_32 添加到您的链接器命令。

关于c++ - Mingw+MSYS 中 libevent 的静态编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285348/

相关文章:

c++ - String.at() 返回时髦的数字

c - 可变参数宏:粘贴 token 的扩展

c - getaddrinfo() 函数返回错误的 IP 地址

c - C 中阶乘的素因数分解

c++ - cygwin gcc-6.4.0 编译器

gcc - 使用 GCC 有选择地删除警告消息

c++ - C++中删除对象

c++ - 使用 Mac C++ 连接 sqlite3 时构建错误

C++/typedef参数错误导致内存泄漏?

c - 尝试使用带有逗号的引号起始数据字段解析 csv