c++ - 链接 : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use/NODEFAULTLIB:library

标签 c++

当我尝试构建与 libeay32.lib 链接的源时。我是从 OpenSSL 源本地构建的。我遇到了上述警告“链接:警告 LNK4098:defaultlib 'MSVCRT' 与使用其他库发生冲突;使用/NODEFAULTLIB:library”。当我调试我的 exe 时,只要有一些系统调用(如 read()),Exe 就会崩溃。经过一番搜索,我发现这是与“运行时库”MT 和 MD 相关的东西。由于某些原因,我无法通过构建 openssl 源来解决此问题。到目前为止,我所做的是将条目“MSVCRT.lib”保留在 Ignore Specific Library 我必须为其他几个库执行此操作。我不想这样做。有没有其他最优解。

最佳答案

如果我理解正确,您将 OpenSSL 的发布版本与导致使用不同 CRT 版本的程序的调试版本混合在一起,因为您没有发布实际设置,OpenSSL 使用 DLL 可能更糟CRT,而您的代码是静态的。请发布您的程序使用哪种 CRT(可以通过单击项目上的 Properties 找到,然后单击 Configuration Properties -> C/C++ -> Code Generation -> Runtime Libarary)。要么使用正确的 OpenSSL 版本(例如,使用调试信息构建它并链接到调试 CRT),要么,因为您声明您无法重新编译 OpenSSL,所以在没有优化的情况下使用 Multi-threaded DLL 编译您的代码,这样您得到一个可以调试并使用与 OpenSSL 相同的 CRT 的程序。我猜这应该可以解决它。

关于c++ - 链接 : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use/NODEFAULTLIB:library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18612072/

相关文章:

c++ - 为什么使用无效概念被视为格式错误

c++ - 无法弄清楚为什么没有在 SDL 中绘制线

c++ - 让 Cplex 示例运行 : Undefined references

c++ - 类中的静态字符串常量与常量的命名空间 [c++]

c++ - 从文件中读取的 ARRAY 类 BubbleSort

c++ - sizeof 静态数组成员返回指针的大小而不是数组

c++ - 如何通过读取文件将不同数据类型的数据推送到一个 vector 中?

c++ - 在 C++ 中使用动态类加载时出现链接器错误

c++ - ifstream 为不存在的文件返回 true

c++ - 信号和槽的测试方法