cinatra icon indicating copy to clipboard operation
cinatra copied to clipboard

win10 vs2019工程中添加cinatra,编译错误

Open chris-shenzhen-china opened this issue 3 years ago • 15 comments

io_service_pool.hpp(57,16): error C2039: 'io_service': is not a member of 'boost::asio' (compiling source file

chris-shenzhen-china avatar Nov 19 '20 03:11 chris-shenzhen-china

io_service在新版本的asio库中已经废弃了,请问能适配到新版本的asio吗?

chris-shenzhen-china avatar Nov 19 '20 06:11 chris-shenzhen-china

你用的是哪个版本的boost?

qicosmos avatar Nov 19 '20 09:11 qicosmos

可以将它换成io_context试试。

qicosmos avatar Nov 19 '20 09:11 qicosmos

没用boost,vcpkg install asio,1.18版本的asio, 除了io_service -> io_context; 还有很多用法都有问题:work也没有了

chris-shenzhen-china avatar Nov 19 '20 09:11 chris-shenzhen-china

还有请教下,我的环境里面不支持 asio::ip::tcp::resolver::query,查看代码ip/basic_resolver.hpp中,下面这段代码是灰的,不知要在哪里undefine ASIO_NO_DEPRECATED #if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) The query type. typedef basic_resolver_query<InternetProtocol> query;

/// (Deprecated.) The iterator type. typedef basic_resolver_iterator<InternetProtocol> iterator; #endif // !defined(ASIO_NO_DEPRECATED)

chris-shenzhen-china avatar Nov 19 '20 09:11 chris-shenzhen-china

看来最新版本的asio变动不小,用boost的asio吧,或者换1.12版本的asio,github上就有取下来就行。

qicosmos avatar Nov 19 '20 09:11 qicosmos

你好,请问啥时会支持https

chris-shenzhen-china avatar Nov 19 '20 09:11 chris-shenzhen-china

看来最新版本的asio变动不小,用boost的asio吧,或者换1.12版本的asio,github上就有取下来就行。

不能改为老版本了,我里面有其他的用到asio的新版本了

chris-shenzhen-china avatar Nov 19 '20 09:11 chris-shenzhen-china

你好,请问啥时会支持https

本来就支持ssl,例子里面有怎么用ssl。

qicosmos avatar Nov 19 '20 09:11 qicosmos

还有请教下,我的环境里面不支持 asio::ip::tcp::resolver::query,查看代码ip/basic_resolver.hpp中,下面这段代码是灰的,不知要在哪里undefine ASIO_NO_DEPRECATED #if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) The query type. typedef basic_resolver_query query;

/// (Deprecated.) The iterator type. typedef basic_resolver_iterator iterator; #endif // !defined(ASIO_NO_DEPRECATED)

你用的是cmake吗?

qicosmos avatar Nov 19 '20 09:11 qicosmos

还有请教下,我的环境里面不支持 asio::ip::tcp::resolver::query,查看代码ip/basic_resolver.hpp中,下面这段代码是灰的,不知要在哪里undefine ASIO_NO_DEPRECATED #if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) The query type. typedef basic_resolver_query query; /// (Deprecated.) The iterator type. typedef basic_resolver_iterator iterator; #endif // !defined(ASIO_NO_DEPRECATED)

你用的是cmake吗?

是的,我刚在 cinatra.hpp中添加 #undef ASIO_NO_DEPRECATED,导致很多问题,看来不能添加,冲突很严重

chris-shenzhen-china avatar Nov 19 '20 09:11 chris-shenzhen-china

不应该啊,在cmakelists.txt里面加 add_definitions(-DASIO_NO_DEPRECATED)

qicosmos avatar Nov 19 '20 09:11 qicosmos

大侠能抽时间适配修改下支持最新的asio 1.18版本吗?感谢

chris-shenzhen-china avatar Nov 19 '20 10:11 chris-shenzhen-china

ok,我抽空看看最新的asio是怎么回事。

qicosmos avatar Nov 19 '20 11:11 qicosmos

你好,我大概修改了几点:

  1. io_service -> io_context
  2. timer的api适配
  3. query -> 直接改为 asio::ip::tcp::endpoint endpoint

现在有个问题始终无法解决,还请大侠看看是怎么回事: 问题点: http_server.hpp的  explicit http_server_(Args&&... args) : io_service_pool_(std::forward<Args>(args)...) 报编译错误 >C:\projectvs\xxx\xxx\source\third_party\cinatra\include\cinatra/http_server.hpp(32,9): error C2512: 'asio::ip::basic_resolver<asio::ip::tcp,asio::any_io_executor>': no appropriate default constructor available (compiling source file C:\projectvs\xxx\xxx\source\auth\main.cc) 1

------------------ 原始邮件 ------------------ 发件人: "qicosmos/cinatra" <[email protected]>; 发送时间: 2020年11月19日(星期四) 晚上7:08 收件人: "qicosmos/cinatra"<[email protected]>; 抄送: "Lucky&nbsp;Lee-0"<[email protected]>;"Author"<[email protected]>; 主题: Re: [qicosmos/cinatra] win10 vs2019工程中添加cinatra,编译错误 (#172)

ok,我抽空看看最新的asio是怎么回事。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

chris-shenzhen-china avatar Nov 20 '20 02:11 chris-shenzhen-china

最新代码需要vs2022,需要c++20,可以用新版的msvc测试一下。

qicosmos avatar Jan 14 '24 12:01 qicosmos