又是我。我就是不明白,为什么会这样!
我下载了 OpenSSL 的编译静态库,从这里 http://www.shininglightpro.com/download/Win32OpenSSL-1_0_0d.exe,此链接位于 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,我使用的是静态链接!我使用 OpenSSL 的静态库构建了静态 libCurl 库。关于ieshims.dll我也不明白为什么它需要它!
请帮忙,我不知道出了什么问题!我按照说明编译了 cUrl,一切都应该没问题。
您链接的 openssl-libs 似乎是导入库。这意味着它们只包含代码调用函数所需的信息,然后从 dll 加载并调用相应的函数。
所以问题是:虽然您链接到静态库,但库随后会加载并使用动态 dll。它们不是“真正的”静态库。
一种解决方案是获取其他库(或自己编译它们),甚至更简单:只需将 dll 复制到 .exe 所在的目录中就可以了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)