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?
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.
One more addition to the Simple Guy's answer: If you use
http_listener
class in your project it is likely you will needHttpapi.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!
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)!