【发布时间】:2013-08-31 10:17:27
【问题描述】:
我正在为使用 OpenSSL 1.0.1e 库的 Windows 开发 C++ 应用程序。我在 Visual Studio 2008 上。
出于可移植性原因,我的应用程序与运行时库静态链接(/MT 和/MTd 选项)。而且我的应用程序不提供运行时库。
根据OpenSSL FAQ,该库默认链接到多线程 DLL 运行时 (/MDd),这显然与我的方案不兼容。因此,为了使我的程序正常运行,我将applink.c 添加到我的项目中。在我的开发机器和大多数测试计算机上,该程序运行良好。
但不幸的是,我找到了应用程序无法启动的计算机。 Windows 显示错误:
The application failed to initialize properly (0xc0150002). Click on OK to
terminate the application.
我在 Dependency Walker 中打开了 libeay32.dll,我发现找不到 MSVCR90.dll。所以applink.c 的技巧对我来说真的不起作用。
如何使用/MT 或/MTd 选项构建OpenSSL?
【问题讨论】:
-
“但不幸的是,我找到了应用程序无法启动的计算机...我发现没有找到 MSVCR90.dll” - 请确保计算机有问题MSVC 运行时的正确版本。您可以从 Microsoft 站点下载它们。它们应该包含在您的软件包安装程序中。
-
我有同样的问题,openssl 1.1.1c 在 windows 10 中编译,使用它的 libssl-1_1-x64.dll 和 libcrypto-1_1-x64.dll,得到运行时错误 msvcrt90.dll not found .在 cpp 文件旁边复制 msvcrt90.dll 后,出现 R6034 错误。 :(
标签: c windows openssl static-libraries static-linking