Странные вещи с libCurl и OpenSSL - PullRequest
       30

Странные вещи с libCurl и OpenSSL

0 голосов
/ 10 августа 2011

Это снова я.Я просто не могу понять, почему так происходит!

Я скачал скомпилированные статические библиотеки OpenSSL, отсюда , эта ссылка находится на официальном сайте cUrl на странице загрузки.Я скачал Zlib и скомпилировал их, затем скомпилировал libcurl с

mingw32-make mingw32-ssl-zlib

, который я изменил во всех патчах makefile.m32 на файлы Zlib и OpenSSL.Все прошло нормально, я получил libcurl.a и libcurldll.a.Я добавил в папку lib моего проекта libcurl.a и libeay32.a, libssleay32.a и libz.a.Я построил проект - он говорит, что все хорошо.Я бегу - и это просто прекратилось.Я использую MinGW и Eclipse.

Он скомпилирован с этим:

g++ -DCURL_STATICLIB -O0 -g3 -Wall -c -fmessage-length=0 -osrc\main.o ..\src\main.cpp

g++ -L..\lib -oYTUploader.exe src\main.o -lcurl -lws2_32 -lwldap32 -leay32 -lssleay32 -lz

Я запускаю DependencyWalker, и он говорит, что отсутствует ieshims.dll, libeay32.dll и ssleay32.dll,Но почему?Почему он хочет OpenSSL DLL, я использую статические ссылки!Я создал статическую библиотеку libCurl со статическими библиотеками OpenSSL.Про ieshims.dll я тоже не могу понять, зачем это нужно!Помогите, пожалуйста, я понятия не имею, что не так!Я скомпилировал cUrl по инструкции, все должно быть хорошо ..

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Похоже, что openssl-libs, с которыми вы ссылаетесь, является import-библиотеками.Это означает, что они содержат только ту информацию, которая необходима вашему коду для вызова функций, а затем загрузки и вызова соответствующих функций из dll.

Итак, проблема в том, что, хотя вы ссылаетесь на статические библиотеки, библиотеки затем загружают и используют динамическиеDLLs.Они не являются «настоящими» статическими библиотеками.

Одним из решений является получение других библиотек (или их компиляция самостоятельно), или даже проще: вы просто копируете dll в каталог, где находится ваш .exe, и у вас все будет хорошо..

0 голосов
/ 03 апреля 2014

Используйте скрипт configure, чтобы сообщить ld, куда openssl установил файлы значения по умолчанию следующие:

tar -zxf curl-7.33.0.tar.gz
cd curl-7.33.0
./configure --prefix=/opt/curlssl --with-ssl=/usr/local/ssl --enable-http --enable-ftp LDFLAGS=-L/usr/local/ssl/lib CPPFLAGS=-I/usr/local/ssl/include

make
make install
...