【发布时间】:2019-12-27 12:06:34
【问题描述】:
使用默认配置构建 OpenSSL 可为您提供动态版本的库。根据其Wiki 上的 OpenSSL 编译和安装文档,有一个名为 no-shared 的配置选项,它禁用共享对象并仅创建一个静态库。
Visual C++ 编译器将二进制文件(库或应用程序)链接到 libcmt(d).lib(使用 /MT(d) 将本机 CRT 启动静态链接到您的代码)或 msvcrt(d).lib(用于使用 /MD(d)) 与 DLL UCRT 和 vcruntime 一起使用的本机 CRT 启动。
链接本身以不同方式链接到 CRT 的二进制文件会导致冲突。不幸的是,OpenSSL 没有给我们设置这个编译器开关的选项。它总是使用 /MD 构建动态版本,使用 /MT 构建静态版本。那么,当我们有其他使用 /MD 链接的静态库(例如 Qt)时,如果我们想将它的静态版本链接到我们的应用程序,我们应该怎么做?
【问题讨论】:
标签: visual-c++ openssl