我正在尝试为 Android 和 iOS 构建一个跨平台应用程序,并选择使用 Boost 来简化通信并从响应中解析 JSON。在 iOS 中一切正常,但如果我将查询更改为query(server, "");
.
我将代码从我的应用程序中提取出来,并将其简化为引发错误的内容,这就是我所拥有的:
...
#include <boost/asio.hpp>
boost::asio::io_service io_service;
std::string server = "<server_address>";
// Get a list of endpoints corresponding to the server name.
boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::query query(server, "http");
boost::system::error_code ec;
boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve(query,ec);
if (ec)
{
return env->NewStringUTF(ec.message().c_str());
}
我正在使用 Android NDK r8e(64 位)和 Boost 版本 1.53(截至撰写时的最新版本)。我已使用https://github.com/MysticTreeGames/Boost-for-Android稍作修改以使用 64 位 NDK(请参阅https://github.com/MysticTreeGames/Boost-for-Android/pull/28 ) 用于构建所需的 Boost 库。
async_resolve
一旦我可以使这部分工作,我将对其进行修改以使用 iOS 版本正在使用的内容。
编辑:
我注意到我忘记更新 Android Manifest 文件,所以我添加了
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
,但我仍然得到相同的错误。我只是在清单中遗漏了其他东西吗?