C++ 使用Autotools和MinGW静态链接OpenSSL和cURL

C++ 使用Autotools和MinGW静态链接OpenSSL和cURL,c++,openssl,codeblocks,libcurl,static-linking,C++,Openssl,Codeblocks,Libcurl,Static Linking,我试图用代码块构建一个静态链接的OpenSSL+LibCurl控制台应用程序。然而,我不能让它工作。我不断地发现这些错误: ||=== Build: Debug in Filer (compiler: GNU GCC Compiler) ===| C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_get0_alpn_selected'| C:\MinGW\msys\1

我试图用代码块构建一个静态链接的OpenSSL+LibCurl控制台应用程序。然而,我不能让它工作。我不断地发现这些错误:

||=== Build: Debug in Filer (compiler: GNU GCC Compiler) ===|
C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_get0_alpn_selected'|
C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_CTX_set_alpn_protos'|
C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_CTX_set_next_proto_select_cb'|
C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_CTX_set_srp_username'|
C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_CTX_set_srp_password'|
C:\MinGW\msys\1.0\local\lib\libcurl.a(libcurl_la-openssl.o)|| undefined reference to `SSL_COMP_free_compression_methods'|
||=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
这是生成日志:

mingw32-g++.exe  -o bin\Debug\Filer.exe "obj\Debug\MinGW Sources\BASE64\base64.o
" "obj\Debug\MinGW Sources\SQLite\sqlite3.o" obj\Debug\Users\thoma\Desktop\Filer
\main.o  -static  -lcurl -lrtmp -lidn -lssl -lssh2 -lcrypto -lz -lwldap32 -lws2_
32 -lwinmm -lgdi32 C:\MinGW\msys\1.0\local\lib\libcrypto.dll.a C:\MinGW\msys\1.0
\local\lib\libcurl.a C:\MinGW\msys\1.0\local\lib\libcurl.dll.a C:\MinGW\msys\1.0
\local\lib\libssl.a C:\MinGW\msys\1.0\local\lib\libssl.dll.a C:\MinGW\msys\1.0\l
ocal\lib\libwxjpeg-3.0.a C:\MinGW\msys\1.0\local\lib\libwxpng-3.0.a C:\MinGW\msy
s\1.0\local\lib\libwxscintilla-3.0.a C:\MinGW\msys\1.0\local\lib\libwxtiff-3.0.a
 C:\MinGW\msys\1.0\local\lib\libz.a C:\MinGW\msys\1.0\local\lib\libz.dll.a
我使用了概述的设置

我的设置的一些图片:



您的OpenSSL版本与libcurl使用的OpenSSL版本不匹配。

您的OpenSSL版本与libcurl使用的OpenSSL版本不匹配。

您的命令行是否有
-L
?@user4581301,我找不到?我添加了构建日志,设置命令行的一些图片看起来有点奇怪
-lcurl
在curl中表示link,但没有告诉链接器在哪里找到它的
-L
。查看“搜索目录”选项卡上是否有允许您指定链接器搜索目录的内容。另一方面,您已经指定了共享库版本的链接信息的确切位置。既然你想要静态链接,我想你可以不用它。也要确保你有静态库。上次我在mingw下玩cURL和SSL时(几年前,请注意),我必须构建吸盘。@user4581301,我已经构建了静态libs?像libcurl.a和libssl.a?您的命令行是否有一个
-L
?@user4581301,不是我能找到的?我添加了构建日志,设置命令行的一些图片看起来有点奇怪
-lcurl
在curl中表示link,但没有告诉链接器在哪里找到它的
-L
。查看“搜索目录”选项卡上是否有允许您指定链接器搜索目录的内容。另一方面,您已经指定了共享库版本的链接信息的确切位置。既然你想要静态链接,我想你可以不用它。也要确保你有静态库。上次我在mingw下玩cURL和SSL时(几年前,请注意),我必须构建吸盘。@user4581301,我已经构建了静态libs?比如libcurl.a和libssl.a?好吧,这似乎很相关。如何解决此问题以及如何验证两个使用过的版本?您希望我重建我的设置?解决此问题实际上非常棘手,您可能需要重新编译
libcurl
本身。好的,我当然可以重新编译lib curl,然而,我如何在它的整个版本中删除旧版本的libcurl和OpenSSL呢?这将是另一个问题。好吧,这似乎是相关的。如何解决此问题以及如何验证两个使用过的版本?您希望我重建我的设置?解决此问题实际上非常棘手,您可能需要重新编译
libcurl
本身。好的,我当然可以重新编译lib curl,然而,我如何在它的整个版本中删除旧版本的libcurl和OpenSSL呢?这将是另一个问题。