I use CMAKE for generate build files for libcurl in static form.
With such settings:
But OpenSSL 1.1.0 in CAPI engine begins to use the Cryptography functions from Wincrypt.h, so Crypt32.lib is required. But in such configuration CMake does not add the Crypt32.lib in CURL_LIBS value.
As result I received the many linker errors with 'unresolved external CertFreeCertificateContext in file ...'
I am expecting the correct linking, but I don't know how to add the Crypt32.lib in dependencies.
Windows 10 x64
Visual Studio 2015
this bug similar to #935
The #935 problem was for the schannel backend though and was fixed in: 2bbed9c. You probably need something similar. But really, building static means you need to figure out and provide all the dependencies yourself and you can't expect our build scripts to always have that right. It's a cat and mouse game that we always will be behind in.
@bagder Yes, you are right. But, curl.exe can use libcrypto.lib and libssl.lib (OpenSSL 1.1.0 in static form) on Windows platforms also. So, it should to add Crypt32.lib in its dependencies. Am I right too?
My proposition: if curl\lubcurl compiled with OpenSSL then cmake should add Crypt32.lib in the dependency list in any case (ether dynamic OpenSSL or static). Then Visual C++ linker has to remove Crypt32.lib reference if it not is used in the assembly.
P.S.: Sorry, I do not know the CMakeLists.txt format and I can't to do this work alone.
fix bug #1147
I add pull request #1149, please review it.
cmake: use crypt32.lib when building with OpenSSL on windows
Reviewed-by: Peter Wu