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?
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:
Now, in your own project:
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.
Compile cpprestsdk using following commands:
Step 1. vcpkg install cpprestsdk:x86-windows-static
Step 2. vcpkg install cpprestsdk:x64-windows-static
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!
In addition to what Simple Guy said, you will probably need to add bcrypt.lib to the Linker->Input->Additional Dependencies since the OAuth1.obj file in CPPRest depends on some of those functions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With