原始问题略有不同,但是一个更重要的问题的一部分.
我试图在Windows上使用静态OpenSSL将Qt 5.2构建为静态.
我的最终目标是发送一个二进制文件而无需提供libeay32.dll和ssleay32.dll.但是,在我看来,这是不可能的.我使用静态openssl库构建了静态Qt,但似乎Qt完全忽略了提供的lib并且总是搜索DLL.
这个答案还表明QtNetwork总是搜索DLL并忽略其他所有内容,但它也声明"两个选项是将OpenSSL编译成Qt ......"但似乎并非如此.
有人能提供明确的答案吗?
这是我的Qt配置(为了便于阅读而增加了换行符):
configure -static -qmake -opensource -nomake examples -opengl desktop -platform win32-msvc2010 -openssl -I C:\git\openssl\build\include -L C:\git\openssl\build\lib OPENSSL_LIBS="-llibeay32 -lssleay32 -lgdi32"
lpapp.. 13
有没有办法用静态OpenSSL构建静态Qt?
当然,在配置Qt时需要使用以下选项:
-openssl-linked
原因是QtNetwork QLibrary
默认使用该类来动态打开库以获取必要的符号.
这是告诉Qt不要这样做的选项,并尊重正常的链接规则.
话虽如此,如果最终用户无需您的参与即可获得安全更新,建议不要对openssl使用静态链接.考虑一下,如果你走了会发生什么,不再在这个项目上工作,等等.
此外,此设置未经常测试,因此您实际上可能会遇到一些应在上游修复的问题,但这是针对相关用例的解决方案设计.
免责声明:由于SO是关于编程的,我忽略了Qt静态链接的许可后果,所以我想快速提醒你,要注意正确使用不要陷入法律麻烦.
有没有办法用静态OpenSSL构建静态Qt?
当然,在配置Qt时需要使用以下选项:
-openssl-linked
原因是QtNetwork QLibrary
默认使用该类来动态打开库以获取必要的符号.
这是告诉Qt不要这样做的选项,并尊重正常的链接规则.
话虽如此,如果最终用户无需您的参与即可获得安全更新,建议不要对openssl使用静态链接.考虑一下,如果你走了会发生什么,不再在这个项目上工作,等等.
此外,此设置未经常测试,因此您实际上可能会遇到一些应在上游修复的问题,但这是针对相关用例的解决方案设计.
免责声明:由于SO是关于编程的,我忽略了Qt静态链接的许可后果,所以我想快速提醒你,要注意正确使用不要陷入法律麻烦.