[WIN][VS2015] Missing Crypt32.lib in Linker Dependencies #1147

Closed
23W opened this Issue Nov 28, 2016 · 4 comments

Projects

None yet

2 participants

@23W
Contributor
23W commented Nov 28, 2016

I did this

I use CMAKE for generate build files for libcurl in static form.
With such settings:

  • OpenSSL 1.1.0c library in static form
  • LibSSH2 1.8.0 in static form (for supporting SFTP, FTPS, ...)
  • zlib 1.2.8 in static form

I expected the following

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.

curl/libcurl version

curl/libcurl 7.51.0-DEV

operating system

Windows 10 x64
Visual Studio 2015

@23W
Contributor
23W commented Nov 28, 2016

this bug similar to #935

@bagder bagder added the cmake label Nov 28, 2016
@bagder
Member
bagder commented Nov 28, 2016

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.

@23W
Contributor
23W commented Nov 29, 2016 edited

@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.

@23W 23W added a commit to 23W/curl that referenced this issue Nov 29, 2016
@23W 23W fix bug #1147 02663ea
@23W
Contributor
23W commented Nov 29, 2016

I add pull request #1149, please review it.

@bagder bagder added a commit that closed this issue Dec 27, 2016
@23W @bagder 23W + bagder cmake: use crypt32.lib when building with OpenSSL on windows
Reviewed-by: Peter Wu
Closes #1149
Fixes #1147
1b711ca
@bagder bagder closed this in 1b711ca Dec 27, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment