OK, I pooled together a number of suggestions from the various threads and have the following set of steps in order to successfully link to the CPP REST static library:

2. Open the VS solution and right-click on the properties of the cpprestsdk140.static.
3. In the C++ -> Preprocessor definitions, add CPPREST_EXCLUDE_COMPRESSION. The full list looks like: _NO_ASYNCRTIMP;_ASYNCRT_EXPORT;_PPLX_EXPORT;WIN32;_MBCS;_USRDLL;CPPREST_EXCLUDE_COMPRESSION;%(PreprocessorDefinitions)
4. In Librarian -> General -> Additional dependencies, add crypt32.lib;winhttp.lib; (See https://github.com/Microsoft/cpprestsdk/issues/344)
5. Press OK, then build the cpprestsdk140.static project. You will end up with a libcpprest140d_2_9.lib (for Debug build) in the Binaries directory.

1. If you have previously used the Nuget version of CPPREST, firstly ensure you remove any references in the Nuget package manager.
2. Right-click your project properties and go to C++ -> Additional Include Directories and enter the path for the CPPREST SDK include files. They currently reside in cpprestsdk\Release\include.
3. Now go to C++ -> Preprocessor definitions, add _NO_ASYNCRTIMP (See https://github.com/Microsoft/cpprestsdk/issues/124).
4. Go to Linker -> Input and add libcpprest140d_2_9.lib (along with pathname, if applicable). For the release version, it appears you also need to add crypt32.lib;winhttp.lib.
5. Build your project and hopefully all is well ;)

I hope this helps someone (I'm sure it will)!

One more addition to the Simple Guy's answer: If you use http_listener class in your project it is likely you will need Httpapi.lib to fix linker errors.

And also I want to propose an easier way to compile a static cpprestdk library. I've successfully used it to build my project in VS2017.

1. install vcpkg from https://github.com/Microsoft/vcpkg
2. Compile cpprestsdk using following commands:

Step 1. vcpkg install cpprestsdk:x86-windows-static

Step 2. vcpkg install cpprestsdk:x64-windows-static