eidheim / Simple-Web-Server

A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications.
MIT License
2.61k stars 751 forks source link

Level of Windows support #189

Closed cryptocode closed 6 years ago

cryptocode commented 6 years ago

My understanding is that tests don't pass/run on Windows due to a lacking -fno-access-control equivalent. Other than that, is Simple-Web-Server known to be stable on Windows (as well as Linus and macOS)?

eidheim commented 6 years ago

The first step to test how stable the library is on Windows would be to run the tests. Even without -fno-access-control, one should be able to compile the tests after some manual changes in the header files, for instance changing all private: and protected: to public:, and add public: where needed.

From previous feedback, I would expect that not all the tests will succeed, but maybe this is something we can improve. There might be issues on Windows that might be difficult to workaround thought, for instance https://github.com/eidheim/Simple-Web-Server/issues/26

SethHamilton commented 6 years ago

I compile with Visual C++ and GCC. I use very recent versions of both. I've had no luck compiling it with boost (which I do not use), but I have managed to get the non-boost ASIO library to work nicely and with little effort on both platforms. I am compiling these projects directly into my application. I have found Simple-Web-Server to be reliable and I've pushed a lot of data through it.

Type1J commented 6 years ago

I'd really like a vcpkg package for Windows. ... After thinking about it, that's really a separate issue from this ticket, so I filed it here: https://github.com/eidheim/Simple-Web-Server/issues/190 The reason that I thought of it is that a patch could be applied to remove the access control problem, but I'm not sure if the tests even run when vcpkg builds. I'm using an older (possibly patched, and forgotten) version of Simple-Web-Server on Windows.

zethon commented 6 years ago

@SethHamilton

I've had no luck compiling it with boost (which I do not use), but I have managed to get the non-boost ASIO library to work nicely

Can you please explain what you used and how you did this? I would really like to use this library as it works great on Mac and Linux, but for the life of me I cannot get it things to work on Windows (see #188).

SethHamilton commented 6 years ago

@zethon The only way I got it to work was by using the standalone (non-boost) version of ASIO. I don't use boost in my project (C++11-17 have most of what I would have used). I also use CMAKE as my project is designed to build on windows and linux. Here is a link:

https://github.com/opset/openset

You can use the compiler flags -DASIO_STANDALONE -DUSE_STANDALONE_ASIO to make ASIO compile standalone.... as far as Simple-Web-Server, it's been 100% the same to develop on Windows as Linux (outside of the ASIO fussiness).