正在尝试静态编译我为 Windows 制作的 QT 程序,并将 openssl 库编译到可执行文件中。 我以为我成功了,但是如果没有Openssl dlls,我就无法运行porgram。 我在网上到处寻找解决方案,但无法找到解决方案。这是我所做的:
我通过编辑用于静态构建 qt 的 windows powershell 脚本将其传递给配置.bat然后运行它来构建:
-openssl-linked
-I C:OpenSSL-Win32include
-L C:OpenSSL-Win32libMinGW
OPENSSL_LIBS=""-lUser32 -lAdvapi32 -lGdi32 -lCrypt32""
OPENSSL_LIBS_DEBUG=-""-lssleay32 -llibeay32""
OPENSSL_LIBS_RELEASE=""-lssleay32 -llibeay32""
现在,如果没有openssl dll,可执行文件将无法工作。 我做错了什么吗?
您正在与OpenSSL的动态版本链接。您应该改为与静态链接:
-L C:OpenSSL-Win32libMinGWstatic
来自 Shining Light Productions 的答案:
依赖关系Walker将向你显示你的可执行文件依赖于哪些DLL。 MinGW库是使用VC++ DLL作为源代码"构建"的。 IIRC,没有静态的 MinGW 构建(为什么生成的 .a 文件是 如此庞大对我来说一直是一个谜)。