您的位置:首页 > 其它

Win7下MingW编译Boost Asio程序的错误解决方法

2013-08-21 18:46 344 查看
使用MingW学习Boost真是一波三折,谁要是想少走弯路还是直接用windows自带的那些编译器吧,开源的东东在微软的平台上真的很不受待见也很麻烦。

先说下编译环境:WIN7 64位旗舰版,MingW 4.4,Boost版本1.53,编译库时都生成成了静态库(.a),源文件是boost asio文档里的第一个例子,文件名改为timer_sync.cpp。

链接时遇到了两个问题:



第一个问题是由于没有指定相应的宏选项,需要用-D参数解决,参考链接:http://boost.2283326.n4.nabble.com/boost-asio-UnregisterWaitEx-RegisterWaitForSingleObject-has-not-been-declared-td4633963.html

第二个问题是因为没有链接ws2_32.dll这个库。

首先,为了敲命令方便,把需要链接的库放到本目录下:拷贝Boost主目录下lib目录的libboost_date_time-mgw44-mt-1_53.a和libboost_system-mgw44-mt-1_53.a到本目录,重新命名时去掉-mgw44-mt(当然如果你敲命令不觉得累可以不重命名,另外也可以重命名为更短的文件名,看个人喜好。)

第二,去网上下载sw_32.dll这个文件,我是在这儿下的
http://cn.dll-files.com/ws2_32.dll.html
,下载完了杀下毒,解压,并拷贝到本目录下。

第三,输入以下命令:



注意这里是用了0x0501这个宏参数,表明平台是XP,不过win7可以兼容。

警告什么的就不用管了,生成了timer_sync.exe程序,运行一下应该没有问题,程序在等待5秒后输出字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐