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.
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:
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,