c++ - 如何使用 C++ 独立 ASIO 库
问题描述
我正在尝试在 Windows 10 上使用 asio 库,这是一个简单的测试代码块:
#include <iostream>
#include <asio.hpp>
using std::cout;
int main()
{
std::cout << "hello asio\n";
asio::io_context ioc;
asio::steady_timer tmer(ioc, asio::chrono::seconds(1));
tmer.wait();
cout << "hi asio\n";
ioc.run();
return 0;
}
使用 Visual Studio 2017。要打开开发人员命令提示符,我使用以下命令
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools>vsdevcmd
然后,基于asio docnmake -f Makefile.msc
,我在 asio src 文件夹下运行命令。但我收到一个错误:
Microsoft (R) Program Maintenance Utility Version 14.16.27025.1
Copyright (C) Microsoft Corporation. All rights reserved.
cl -Fetests\latency\tcp_client.exe -Fotests\latency\tcp_client.obj -nologo -EHac -GR -I. -I../include -O2 -MD -I../../boost_1_34_1 -D_WIN32_WINNT=0x0501 -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING tests\latency\tcp_client.cpp -link -opt:ref
tcp_client.cpp
../include\asio/detail/config.hpp(26): fatal error C1083: Cannot open include file: 'boost/config.hpp': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\cl.EXE"' : return code '0x2'
Stop.
该库似乎需要 boost/config.hpp。我真的试图避免使用提升。有没有办法可以在 Windows 10 上独立使用 asio?
解决方案
要在没有任何 boost 库的情况下使用 asio,您必须ASIO_STANDALONE
在某个时候定义。最好的方法是在您的 Visual Studio 项目中,或者在任何包含 asio 标头之前的代码中。
推荐阅读
- regex - 如何在源上使用 \ 创建正则表达式
- angular - 侧边栏菜单和角度动画(无法正常工作)
- firebase - 通过 WorkManager 恢复 Firebase 上传任务时出现 StorageException
- ruby - 如何在 Ruby 中打开目录中的目录
- android - firebase 通知未显示,令牌未刷新
- python - 无法从 imblearn.over_sampling import SMOTE 导入
- java - RecyclerView 如何在某个位置执行滚动项到顶部?
- arrays - 在 SOAP 响应中访问数组上下文
- c# - 从后台工作人员修改控制。不存在
- php - 如何使用 REST API 登录和显示其他 html/php 页面