当我尝试构建与 libeay32.lib 链接的源代码时。我已经从 OpenSSL 源本地构建了这个。我遇到了上述警告“LINK:警告 LNK4098:defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library”。当我调试我的 exe 时,只要有一些系统调用(如 read()),Exe 就会崩溃。经过一番搜索,我发现这是与“运行时库”MT和MD相关的东西。由于某些原因,我无法通过构建 openssl 源来解决此问题。截至目前,我所做的是将条目“MSVCRT.lib”保留在忽略特定库我必须为其他几个库执行此操作。我不想这么做。还有其他最优解吗。
如果我理解正确的话,您将 OpenSSL 的发布版本与程序的调试版本混合在一起,这会导致使用不同的 CRT 版本,因为您还没有发布实际设置,所以更糟糕的是 OpenSSL 使用 DLL CRT,而您的代码静态。请发布您的程序使用哪种CRT(可以通过单击找到Properties
关于该项目,然后Configuration Properties -> C/C++ -> Code Generation -> Runtime Libarary
)。使用正确的 OpenSSL 版本(例如,使用调试信息构建它并链接到调试 CRT),或者,因为您声明无法重新编译 OpenSSL,所以使用以下命令编译您的代码Multi-threaded DLL
在没有优化的版本中,您可以获得一个可以调试的程序,并使用与 OpenSSL 相同的 CRT。我想这应该可以解决它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)