libCurl和OpenSSL的怪事
Weird things with libCurl and OpenSSL
又是我。我就是不明白,为什么事情会这样发展!
我下载了编译好的OpenSSL的静态库,从这里,这个链接在官方cUrl站点的下载页面。我下载了Zlib并编译了它们,然后用
编译了libcurlmingw32-make mingw32-ssl-zlib
我修改了所有的makefile。Zlib和OpenSSL文件的m32路径。一切顺利,我收到了libcurl。A和libcurllll。我添加到lib文件夹的我的项目libcurl。A和libay32。libssleay32。A和libza。我建了一个项目,它说一切正常。我运行,然后它就终止了。我正在使用MinGW和Eclipse。
是这样编译的:
g++ -DCURL_STATICLIB -O0 -g3 -Wall -c -fmessage-length=0 -osrcmain.o ..srcmain.cpp
g++ -L..lib -oYTUploader.exe srcmain.o -lcurl -lws2_32 -lwldap32 -leay32 -lssleay32 -lz
我运行DependencyWalker,它说它缺少ieshims.dll, libeay32.dll和ssleay32.dll。但是为什么呢?为什么它需要OpenSSL dll,我使用静态链接!我用OpenSSL的静态库构建了静态libCurl库。关于ieshims.dll,我也不明白它为什么需要它!帮帮我,我不知道怎么了!我按照说明编译了cUrl,应该没问题。
您所链接的openssl- libraries似乎是import-libraries。这意味着它们只包含代码调用函数所需的信息,然后从dll中加载和调用相应的函数。
所以问题是:虽然你链接到静态库,库然后加载和使用动态库。它们不是"真正的"静态库。
一种解决方案是获得其他库(或自己编译它们),或者更简单:您只需将dll复制到.exe所在的目录中,就可以了。
使用configure脚本告诉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
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 如何在openssl-ecc中获取十六进制格式的私钥
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 发送一个带有libcurl C++问题的帖子请求:s
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 使用libcurl提交批量url的正确BING Api POST url是什么
- OpenSSL TLS服务器-使用客户端证书白名单
- 通过 Openssl 命令行加密,通过 c++ 解密
- 使用已使用 java 编码的 openssl 解码数据
- 在 libcurl 连接池中预创建连接
- OpenSSL没有共享密码
- libcurl 和 DNS ttl 中的内部连接管理
- OpenSSL 解密功能无法正常工作
- 如何在 cmake 库中包含 libcurl
- OpenSSL BIO and SSL_read
- 如何在OpenSSL库的名称中添加后缀'd'?
- 如何应用 libcurl 的持久连接选项
- 使用openssl下载证书,并将证书设置为libCURL
- libCurl和OpenSSL的怪事
- libcurl + openssl不能下载大于2GB的文件