Statically linking Casablanca/CPPREST SDK

Viewed 8063

I am trying to create a Windows-based VC++ DLL (in VS 2015) that statically links to the Casablanca CPPREST SDK. That is, I would like a single DLL output which contains the CPP REST library along with my code.

I have referred to this thread, however it seems rather dated (and has broken links):

https://katyscode.wordpress.com/2014/04/01/how-to-statically-link-the-c-rest-sdk-casablanca/

I have tried to download the Casablanca repo from GitHub and compile the "cpprestsdk140.static" project which produces a lib file. The problem is I get a number of unresolved externals when linking it with my project.

Numerous people have commented on the unresolved link errors in the above-mentioned URL. There are also numerous threads on Github with people saying they cannot link simple projects with the static library.

Does anyone have a clear set of steps that can help resolve this?

3 Answers

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

  3. Follow the second part of Simple Guy's answer starting from your project settings. Additionally, use my advice from above and BobC to fix linker errors.

Enjoy!

Related