|
Boost Users : |
From: Andrew McFarlane (andrew.mcfarlane52_at_[hidden])
Date: 2020-01-29 01:14:58
Hi All,
I am attempting to get acquainted with C++ multithreaded network
programming. I have a background in such topics within Java but considering
how different C++ is, I am starting from ground zero.
I have copied the code from tutorial #1 into my IDE, Timer.1: Using a timer
synchronously:
https://www.boost.org/doc/libs/1_72_0/doc/html/boost_asio/tutorial/tuttimer1.html
(follow
the link for code).
When I tried to compile this (using g++) with the following command:
g++ -v -I${BOOST_ROOT} -I. -o main main.cpp
(BOOST_ROOT is where I have boost installed), I get the following output:
Undefined symbols for architecture x86_64:
"boost::chrono::steady_clock::now()", referenced from:
boost::asio::detail::chrono_time_traits<boost::chrono::steady_clock,
boost::asio::wait_traits<boost::chrono::steady_clock> >::now() in
main-c86634.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
Note this is the non-verbose output (I would rather not post the verbose
output, as I am trying to keep this post short).
I did some digging of my own on Boost's steady_timer documentation and
tried to follow that style, as you can find here:
https://www.boost.org/doc/libs/1_72_0/doc/html/boost_asio/reference/steady_timer.html
In other words, I replace the two-parameter boost::asio::steady_timer ctor
call with a single-parameter ctor call in which I pass an io_context,
followed by
t.expires_after(std::chrono::seconds(5));
This generated another compiler error, this one to do with 'no viable
conversion'. See here:
main.cpp:10:21: error: no viable conversion from 'std::chrono::seconds' (aka
'duration<long long>') to 'const
boost::asio::basic_waitable_timer<boost::chrono::steady_clock,
boost::asio::wait_traits<boost::chrono::steady_clock>,
boost::asio::executor>::duration' (aka 'const duration<long long,
ratio<(1L), (1000000000L)> >')
t.expires_after(std::chrono::seconds(5));
Again, there is more output that I have omitted for brevity. If anyone
would like to see the rest of the output, I will gladly supply it.
The bottom line is I am not sure what the problem is, or why I am having to
debug tutorial code in the first place. This should be relatively simple to
"plug & play", should it not? Does this have to do with my compiler? BTW, I
am running Mac OS X.
Thanks in advance for the help.
Sincerely,
*AJ*
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net