Giter Club home page Giter Club logo

boost.http's People

Contributors

vinipsmaker avatar xvjau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boost.http's Issues

example build failure with cmake and multiple boost versions

I build on gentoo with my custom boost installed into /usr/local. I have also system built boost in /usr.
To compile example I needed to add this line to CMakeLists.txt:

link_directories(${Boost_LIBRARIES_DIRS})

just before target_link_libraries.

segfault when `handler` called before `result.get()`

If the following async_foobar is available:

template<class CompletionToken>
typename asio::async_result<
    typename asio::handler_type<CompletionToken,
                                void(system::error_code)>::type>::type
async_foobar(CompletionToken &&token)
{
    typedef typename asio::handler_type<
        CompletionToken, void(system::error_code)>::type Handler;

    Handler handler(std::forward<CompletionToken>(token));
    asio::async_result<Handler> result(handler);

    // handler not scheduled (i.e. called before `result.get()`)
    handler(system::error_code());
    return result.get();
}

And called within the following context:

#include <cstdlib>

#include <boost/asio/io_service.hpp>
#include <boost/asio/spawn.hpp>

using namespace std;
using namespace boost;

int main(int argc, char *argv[])
{
    asio::io_service ios;

    auto work = [](asio::yield_context yield) {
        while (true) {
            try {
                async_foobar(yield);
            } catch (std::exception &e) {
                cerr << "Aborting on exception: " << e.what() << endl;
                std::exit(1);
            }
        };
    };

    spawn(ios, work);
    ios.run();
    return 0;
}

The program will segfault (not even an exception is throw or anything). The debug output follows:

vinipsmaker ~ $ clang++ test.cpp -std=c++11 -lboost_system -lboost_coroutine -g
vinipsmaker ~ $ gdb a.out 
GNU gdb (GDB) 7.8
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...done.
(gdb) run
Starting program: /home/vinipsmaker/a.out 
Got object file from memory but can't read symbols: File truncated.
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7ff7d48 in ?? ()
(gdb) backtrace
#0  0x00007ffff7ff7d48 in ?? ()
#1  0x00007ffff7ff7d48 in ?? ()
#2  0x00007fffffffe548 in ?? ()
#3  0x00007ffff7ff7da0 in ?? ()
#4  0x0000000000406383 in boost::asio::detail::coro_entry_point<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, void (*)(), boost::asio::detail::is_continuation_if_running>, main::$_0&>::operator()(boost::coroutines::coroutine<void (), 0>&) (this=0x7ffff7ff7e70, ca=...)
    at /usr/include/boost/asio/impl/spawn.hpp:248
#5  0x000000000043cc00 in ?? ()
#6  0x00007ffff7ff7e70 in ?? ()
#7  0x000000000043c8c0 in ?? ()
#8  0x0000000000000000 in ?? ()
(gdb) frame 4
#4  0x0000000000406383 in boost::asio::detail::coro_entry_point<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, void (*)(), boost::asio::detail::is_continuation_if_running>, main::$_0&>::operator()(boost::coroutines::coroutine<void (), 0>&) (this=0x7ffff7ff7e70, ca=...)
    at /usr/include/boost/asio/impl/spawn.hpp:248
248           (data->function_)(yield);
(gdb) l
243         {
244           shared_ptr<spawn_data<Handler, Function> > data(data_);
245           ca(); // Yield until coroutine pointer has been initialised.
246           const basic_yield_context<Handler> yield(
247               data->coro_, ca, data->handler_);
248           (data->function_)(yield);
249           if (data->call_handler_)
250             (data->handler_)();
251         }
252

This problem needs to be investigated! It's very important because some errors are detected sooner and are being propagated before result.get() is called.

Antony Polukhin's review

Memory management

  • boost::http::basic_socket should be able to receive some parser_traits. Such parser_traits should allow us to limit maximum HTTP header key and value sizes and it should also allow to limit number of headers as well as maximum body size. The point is that should be possible to avoid reallocations and leave memory management for the user. Other useful options are strict/liberal parser, predicate to decide whether header should be stored (blacklist wouldn't work)...
  • Expanding on the above item, there should be a portable interface among sockets to dictate maximum size for some HTTP elements. basic_socket should implement it. Other backends may not (On the non-hacky front).
  • Further tune Message concept to allow an implementation that will drop info at insertion time instead relying on C++11's container concepts. Text should be in the lines of something like "this operation potentially insert an element...". (How could a user provide a message concept that satifies the SequenceContainer for the body avoid memory allocations?...).
  • Fix vector capacity tuning.
  • Remove all (implicitly) allocating code (e.g. last_header).

Others

  • Provide a HTTP parser. This way, user can benefit even if he won't use Asio.
  • Provide algorithm that will create a HTTP raw stream (represented as a string) from a HTTP message. Also provide a "literal message" of some sort that is created using literal strings and return a const value of an unspecified type that models the Message concept.
  • Implement HTTP/2.0
  • Friendlier interface. It should be addressed with a request router and better documentation that makes use of such router.
  • Provide algorithms to remove boilerplate on reading messages (http::completions::full(message_) is a functor).

WON'T FIX

David Sankel's review

Documentation/examples

  • How to fetch the contents of a website given a URL.
  • How to make a static page server.
  • How to write code that handles a POST or GET request dynamically based on specified parameters.
  • How to write a server that accepts file uploads.
  • HTTP/2.0
  • Websockets

Others

  • There should be more high-level components.
  • Client side
  • "I would also like to see instances of this library being used in production. That would give some evidence that the design works in practice."

very interesting

I believe this would be interesting to many people. Consider adding this to the Boost Library Incubator (www.blincubator.com) To do this, all you'd have to do is make a couple minor adjustments in directory layout and provide browsable html documentation.

Robert Ramey

Rodrigo Madera's review

  • Header only

  • C++98

  • Needs higher-level abstractions

  • Benchmark. Should also compare against Asio examples of HTTP servers.

  • More examples.

  • Improve tutorials. Maybe use ASIO as a reference/inspiration.

  • HTTP/2.0

  • "You should send a 100-continue to ask for the rest of the body if
    required."

    It shouldn't be required. It's boilerplate in most cases.

Lee Clagett's review

Specification/type-requirements

  • "async_writeandasync_read_some` in the http::Socket concept requires an entire http::Message concept as an argument, when only the SequenceContainer concept should be necessary for this function" (TODO: decrease requirements and add a few helper functions/types).

  • "It might be worth eventually relaxing the requirements for the key/values in the AssociativeMap used by the field parsing functions to a subset of string functions. begin(), end(), size(), empty(), push_back(), pop_back(), operator<(), a hash implementation, and contigous data. This way a quick and dirty small string optimization could be written for field handling."

  • "The current async_write_response implementation assumes contiguous elements on the SequenceContainer concept, which is incorrect."

    The error on the implementation happens because the implementation converts the body to an asio::buffer. asio::buffer requires contiguous elements. Message concept only requires SequenceContainer.

    A solution could be requiring contiguous elements also within the Message concept.

  • More considerations for design choices (or documentation wording) should be considered - All data reads / writes for the message body require a copy to be made.

  • "How do the various write functions manipulate the headers? What fields are added, if any? This is partially mentioned at the bottom of the http::ServerSocket page, but I saw "content-length: 22" added to my message, and this was never explicitly stated (although obviously assumed). This should likely be explicitly specified in the concept itself, AND the location should be specified (i.e. these fields are explicitly appended). Should also document that some fields, such as content-length cannot be listed twice according to the specification, while comma de-limited fields can be listed multiple times as a valid form of appension. I.e. "content-encoding: gzip, sdch\r\n" and "content-encoding: gzip\r\ncontent-encoding: sdch\r\n" indicate equivalent content encodings applied to the data. Should probably mention that Transfer-Encoding is a comma delimited list too."

  • "The key_type and mapped_type for the headers portion of the message::Concept indicate that they must meet the "String concept". I don't recall seeing this concept being defined in C++ or boost, where does it come from? If its from C++1z, it might be to merge the behavior of string_ref and basic_string, so that concept would be unlikely to require storage like a container. Might want to re-think the concept requirements here, or state that only a conforming std::basic_string implementation is acceptable for now."

pipelining and implicit writes

Excessive writes for response headers

Running a unit-test, I noticed that for every header, the header name and the header value as well as the \r\n at the end would result in three separate writes. This means three Kernel-Space/User-Space switches for each single header.

Specify max header and URL in request line lengths

I think that good security enhancement would be some max lengths configurations:

  • maximum length of URL in request line
  • maximum length of header's name and header's value

These are possible attack surfaces.

Niall Douglas's review

  • C++98 support.

  • Macros for C++11 (e.g. optionally expose std::error_code).

  • Remove CMake.

  • Header-only.

  • Regularly input fuzz tested. american fuzzy lop or LLVM libfuzzer at least weekly on a CI.

  • queue_socket isn't standard and causes confusion. It deserves more attention in documentation (...a page just documenting composed operations...).

  • queue_socket should be provided (I don't think queue sockets should be a concept, I think they need to be the core of your library's user facing API....).

  • You've not convinced me why I should use your library and not write some ad hoc code which would be "good enough".

    You've not convinced me why I should use your library and not an alternative, including one written in Python or PHP.

    At the front of your docs, you need to have me convinced by the end of page 2 that there is no better library than yours, including on other languages. Evidence such as an excellent literature review covering alternatives and benchmarks between your code and alternatives are steps in the right direction.

  • What alternatives may be better suited for the user examining Http for suitability and why? i.e. make your documentation useful to people with a problem to solve, not just a howto manual.

  • Benchmarks, especially latency ones which are important for many uses of HTTP are missing. I'd particularly like to know confidence intervals on the statistical distribution so I know worst case outcomes.

  • Tutorials that incrementally show how to build a full application ("Personally speaking, I'd like if in your tutorial you took ten self-contained steps in building a simple HTTP fileserver, each with a finished working program at the end of each section. Like the ASIO tutorial does. In particular, I'd like to see layers which add on etags and other of the fancy facilities in stages.").

  • HTTP/2.0.

  • CI testing with valgrind

  • thread sanitiser

  • coveralls.io coverage testing

  • Documentation improvement on the design ideas (The pipeline has the following requests... is missing and pipelining causes too much confusion still).

  • Avoid nesting too many [section] blocks.

  • easy API like the above for Python's urllib3 (example from Niall show HTTP client code).

Hints

WON'T FIX

  • Boost-less version of Boost.Http.
  • Explain why Boost.Http uses Asio.

Limit the size of requests

As a security measure, we need to limit the amount of bytes per request, so an attacker cannot, easily, perform a DoS attack by simply sending and excessive number of headers or multiple-gigabyte requests.

Ideally, a preset limit in the number of HTTP-Headers that the parser will receive before dropping the request can be implemented. The user could optionally pass a custom limit when instantiating the template.

Compile error, Visual Studio

I ran CMake on the test directory, opened up the solution, and tried to build. I get this error in many places:

2>D:\lib\boost_1_61_0\boost/asio/detail/socket_types.hpp(24): fatal error C1189: #error: WinSock.h has already been included

`async_read_until(full_message_unsafe)`

One for each step the user want to read (metadata...). The API should handle 100-continue for the user. Also, remember to add full_message_if_safe version that only will read the body if "content-length" is previously know. Names aren't set in stone and can change, but the name unsafe should be used to discourage users to use memory-exhausting APIs.

Branch renaming

As the parser is the new main attraction from the library, I'm gonna rename branches. So this is a warning in case you've cloned the repo.

I intend to submit the parser library to Boost review once I finish the remaining two features (maybe three) I have in my backlog. The parser library was developed with no trace history of the master branch (i.e. orphan branch). I'm not submitting the current master branch to review. Therefore, the current branch layout would cause confusion and I'm handling this problem now.

The plan

master -> socket
parser -> master

All commits in parser are already in master (I regularly do git merge parser from master branch, as the parser is used in the larger library), then I cannot force an error if you forget to manually update your copy of the respository. Therefore, to force such error, I'll do the following two changes now:

  1. Copy branch master to socket.
  2. Create an orphan branch to replace master which will just have a README.adoc explaining the change. If you missed this notice and just run git pull, you should get an error and eventually reach this issue to understand what's going on.

After three weeks, I'll replace the master branch with the parser branch. I'll maintain the branch parser for another three weeks (plenty of window time-space to upgrade your projects).

Tom Kent's review

  • "a set of convenience functions that could replace most of the boilerplate that is in the tutorial."
  • Bjam
  • C++03/98
  • Header only and compiled library
  • HTTP2
  • "I think the documentation needs serious work. The only example is very long and drawn out. The first example should be something a user can get running in a few lines of code, not a full page. There should also be more examples of how to integrate the http service with getting files from the file system, generating responses CGI-style, supporting TLS (is this a feature? If not this would be a show-stopper), etc."

Less important items

  • Cookies
  • Forms/File Uploads

Add <boost/iostreams/filter/gzip.hpp> support

A basic feature of most HTTP request is the use of compression of post and response bodies. We need to implement some way of performing gzip compression and decompression.

Ideally, allow for custom compressors to be used also.

Darren Cook's review

  • Better documentation, better marketed and much more examples.

  • High-level API.

  • Header-only

  • A built-in router.

  • Benchmarks.

    I would like to see CPU and memory usage benchmarks; ideally on reference hardware such as an Amazon EC2 instance. Realistic examples such as: a simple file server, a file-server that is doing substitution/modification of the files being read, and a chat server. This is because artificial benchmarks often encourage making the design harder to use for the sake of a few microseconds. I'd rather have a server, doing real work, that can support 499 clients/second than one that can support 500 clients/second but requires me to write twice as much code.

About HttpClient

Good inspirations:

  • cURL.
  • PHP's file_get_contents.

WON'T FIX

  • It should be called Boost.HttpServer; and then there should be another library called Boost.HttpClient.

Roland Bock's review

  • offers both client and server side
  • offers a high level interface that allows me to get started very quickly, without having to worry about the gory details
  • offers tons of ways to tune, in case I feel the need to do that
  • supports HTTP/1 through HTTP/2
  • more documentation (and probably a different tutorial). More examples are required. A few short ones especially.
  • Some more advanced examples, e.g. including TLS with client/server certificates would help.

jwaterloo's review

  • more documentation and detailed examples of these polymorphic adapters
  • HTTP/2.0

could boost context be optional

could boost context be optional
on mingw, context is not built by default because context requires masm to be on the path
...
I was able to work around this issue by getting masm and rebuilding boost but is MASM is optional, than context is option in boost and as such should preferably be optional in any libraries that bepend upon it

Build failing with boost 1.56

Tried building your library with boost 1.56 installed on my system, but it had trouble resolving the overloaded constructors in flat_multimap in the socket tests.

Took a look through the boost docs, and on 1.56, there's no initializer_list constructor for flat_multimap. That constructor first appears in 1.57.

It'd be helpful to have a note in your readme detailing the minimum boost version required to build your library. I know if/when this library is approved for boost inclusion, it'll be at a version where the minimum requirements are met, but for people trying out your library with a system boost installed, it's nice to know if an upgrade is necessary or not.

Fuzz testing

Fuzz test untrusted inputs when parsing HTTP.

Connection Read Timeout

I don't see how to specify how long server should wait to read the message from client's socket.

Not sure if this is possible.

unable to build with make on windows using 64bit mingw

unable to build with make on windows using 64bit mingw
It fails 33% of way through on the algorithm target
It is likely because its not linking with ws2_32 mswsock as in " -lws2_32 -lmswsock"
Error follows

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\JWATERLOO>cd C:\Tutorials\C++\boost.http\build

C:\Tutorials\C++\boost.http\build>mingw32-make
[ 23%] Built target boost_http
[ 28%] Linking CXX executable algorithm.exe
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x442
): undefined reference to `_imp__WSACleanup@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0xcba
): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_check
pointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0xd78
): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERKN
S0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS1
_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x11d
9): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x129
2): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x16f
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x17b
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1d4
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1e0
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x226
9): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x232
2): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x278
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x284
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x2dd
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x2e9
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x32f
9): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x33b
2): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x380
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x38c
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x3e5
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x3f1
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x44a
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x456
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x4af
a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x4bb
8): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x515
2): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x521
0): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x57a
2): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x586
0): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x5df
2): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x5eb
0): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x644
2): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x650
0): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x6a9
2): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x6b5
0): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x70e
2): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x71a
0): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x752
6): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x75d
e): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0xd11
6): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_chec
kpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0xd1c
e): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implERK
NS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjNS
1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x12c
e6): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x12d
9e): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x188
90): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x189
0f): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x196
d0): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x197
4f): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1a8
55): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1a8
ed): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1bc
e8): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1bd
b3): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1c6
56): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1c8
7d): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1e7
04): undefined reference to `_imp__WSACleanup@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1f3
d4): undefined reference to `_imp__WSAStartup@8'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1f6
57): undefined reference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1f6
a1): undefined reference to `_imp__WSASend@28'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1f6
b1): undefined reference to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x1f9
f8): undefined reference to `_imp__WSACleanup@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x209
8a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x20a
2f): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x210
7a): undefined reference to `_imp___ZN5boost9unit_test15unit_test_log_t14set_che
ckpointENS0_13basic_cstringIKcEEjS4_'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text+0x211
0c): undefined reference to `_imp___ZN5boost10test_tools9tt_detail10check_implER
KNS0_16predicate_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEjN
S1_10tool_levelENS1_10check_typeEjz'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13ba
sic_cstringIKcEE[__ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_d
etail6unusedEEENS0_13basic_cstringIKcEE]+0x1f): undefined reference to `_imp___Z
N5boost9unit_test9ut_detail24normalize_test_case_nameB5cxx11ENS0_13basic_cstring
IKcEE'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13ba
sic_cstringIKcEE[__ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_d
etail6unusedEEENS0_13basic_cstringIKcEE]+0x4b): undefined reference to `_imp___Z
N5boost9unit_test9test_caseC1ENS0_13basic_cstringIKcEERKNS0_9callback0INS0_9ut_d
etail6unusedEEE'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text.start
up+0x25): undefined reference to `_imp___ZN5boost9unit_test14unit_test_mainEPFbv
EiPPc'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text.start
up+0xfb): undefined reference to `_imp___ZN5boost9unit_test9ut_detail24auto_test
_unit_registrarC1EPNS0_9test_caseEm'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text.start
up+0x904): undefined reference to `_imp___ZTVN5boost9unit_test15unit_test_log_tE
'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text.start
up+0x93a): undefined reference to `_imp__WSAStartup@8'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio10io_serviceD1Ev[__ZN5boost4asio10io_serviceD1Ev]+0x77): undefined refe
rence to `_imp__WSACleanup@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail10socket_ops5closeEjRhbRNS_6system10error_codeE[__ZN5boost4asio6
detail10socket_ops5closeEjRhbRNS_6system10error_codeE]+0x1a): undefined referenc
e to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail10socket_ops5closeEjRhbRNS_6system10error_codeE[__ZN5boost4asio6
detail10socket_ops5closeEjRhbRNS_6system10error_codeE]+0x20): undefined referenc
e to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail10socket_ops5closeEjRhbRNS_6system10error_codeE[__ZN5boost4asio6
detail10socket_ops5closeEjRhbRNS_6system10error_codeE]+0x3a): undefined referenc
e to `_imp__closesocket@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail10socket_ops5closeEjRhbRNS_6system10error_codeE[__ZN5boost4asio6
detail10socket_ops5closeEjRhbRNS_6system10error_codeE]+0xd8): undefined referenc
e to `_imp__setsockopt@20'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail10socket_ops5closeEjRhbRNS_6system10error_codeE[__ZN5boost4asio6
detail10socket_ops5closeEjRhbRNS_6system10error_codeE]+0x14e): undefined referen
ce to `_imp__ioctlsocket@12'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail28win_iocp_socket_service_base13start_send_opERNS2_24base_implem
entation_typeEP7_WSABUFjibPNS1_18win_iocp_operationE[__ZN5boost4asio6detail28win
_iocp_socket_service_base13start_send_opERNS2_24base_implementation_typeEP7_WSAB
UFjibPNS1_18win_iocp_operationE]+0x69): undefined reference to `_imp__WSASend@28
'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail28win_iocp_socket_service_base13start_send_opERNS2_24base_implem
entation_typeEP7_WSABUFjibPNS1_18win_iocp_operationE[__ZN5boost4asio6detail28win
_iocp_socket_service_base13start_send_opERNS2_24base_implementation_typeEP7_WSAB
UFjibPNS1_18win_iocp_operationE]+0x74): undefined reference to `_imp__WSAGetLast
Error@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail14select_reactor21deregister_descriptorEjRNS2_19per_descriptor_d
ataEb[__ZN5boost4asio6detail14select_reactor21deregister_descriptorEjRNS2_19per_
descriptor_dataEb]+0x24f): undefined reference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail14select_reactor21deregister_descriptorEjRNS2_19per_descriptor_d
ataEb[__ZN5boost4asio6detail14select_reactor21deregister_descriptorEjRNS2_19per_
descriptor_dataEb]+0x290): undefined reference to `_imp__WSASend@28'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio6detail14select_reactor21deregister_descriptorEjRNS2_19per_descriptor_d
ataEb[__ZN5boost4asio6detail14select_reactor21deregister_descriptorEjRNS2_19per_
descriptor_dataEb]+0x2a0): undefined reference to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x291): undefined r
eference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x296): undefined r
eference to `_imp__closesocket@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x2b1): undefined r
eference to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x36f): undefined r
eference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x3b0): undefined r
eference to `_imp__WSASend@28'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x3c0): undefined r
eference to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x4f3): undefined r
eference to `_imp__ioctlsocket@12'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x50a): undefined r
eference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x551): undefined r
eference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x57c): undefined r
eference to `_imp__setsockopt@20'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv[__ZN5boost4as
io21stream_socket_serviceINS0_2ip3tcpEE16shutdown_serviceEv]+0x58c): undefined r
eference to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4http12basic_socketINS_4asio19basic_stream_socketINS2_2ip3tcpENS2_21stream_s
ocket_serviceIS5_EEEEED1Ev[__ZN5boost4http12basic_socketINS_4asio19basic_stream_
socketINS2_2ip3tcpENS2_21stream_socket_serviceIS5_EEEEED1Ev]+0x3b6): undefined r
eference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4http12basic_socketINS_4asio19basic_stream_socketINS2_2ip3tcpENS2_21stream_s
ocket_serviceIS5_EEEEED1Ev[__ZN5boost4http12basic_socketINS_4asio19basic_stream_
socketINS2_2ip3tcpENS2_21stream_socket_serviceIS5_EEEEED1Ev]+0x3f7): undefined r
eference to `_imp__WSASend@28'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4http12basic_socketINS_4asio19basic_stream_socketINS2_2ip3tcpENS2_21stream_s
ocket_serviceIS5_EEEEED1Ev[__ZN5boost4http12basic_socketINS_4asio19basic_stream_
socketINS2_2ip3tcpENS2_21stream_socket_serviceIS5_EEEEED1Ev]+0x407): undefined r
eference to `_imp__WSAGetLastError@0'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio15basic_io_objectINS0_21stream_socket_serviceINS0_2ip3tcpEEELb1EED2Ev[_
_ZN5boost4asio15basic_io_objectINS0_21stream_socket_serviceINS0_2ip3tcpEEELb1EED
2Ev]+0x366): undefined reference to `_imp__WSASetLastError@4'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio15basic_io_objectINS0_21stream_socket_serviceINS0_2ip3tcpEEELb1EED2Ev[_
_ZN5boost4asio15basic_io_objectINS0_21stream_socket_serviceINS0_2ip3tcpEEELb1EED
2Ev]+0x3a7): undefined reference to `_imp__WSASend@28'
CMakeFiles\algorithm.dir/objects.a(algorithm.cpp.obj):algorithm.cpp:(.text$_ZN5b
oost4asio15basic_io_objectINS0_21stream_socket_serviceINS0_2ip3tcpEEELb1EED2Ev[_
_ZN5boost4asio15basic_io_objectINS0_21stream_socket_serviceINS0_2ip3tcpEEELb1EED
2Ev]+0x3b7): undefined reference to `_imp__WSAGetLastError@0'
../libboost_http.a(socket.cpp.obj):socket.cpp:(.text+0x52): undefined reference
to `_imp__WSACleanup@0'
../libboost_http.a(socket.cpp.obj):socket.cpp:(.text+0x81): undefined reference
to `_imp__WSAStartup@8'
collect2.exe: error: ld returned 1 exit status
test\CMakeFiles\algorithm.dir\build.make:103: recipe for target 'test/algorithm.
exe' failed
mingw32-make[2]: *** [test/algorithm.exe] Error 1
CMakeFiles\Makefile2:1079: recipe for target 'test/CMakeFiles/algorithm.dir/all'
 failed
mingw32-make[1]: *** [test/CMakeFiles/algorithm.dir/all] Error 2
makefile:137: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

C:\Tutorials\C++\boost.http\build>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.