【问题标题】:linker errors with openssl on VS 2008VS 2008 上的 openssl 链接器错误
【发布时间】:2010-01-23 07:55:37
【问题描述】:

我安装了 openssl 0.9.8l 并将包含和库路径添加到 VS 目录。 (我之前在安装 boost 库时已经这样做了)。但我继续收到链接器错误。

无论如何我都可以解决。

错误如下

Error   1   error LNK2019: unresolved external symbol _BN_free referenced in function _main RSA.obj RSA
Error   2   error LNK2019: unresolved external symbol _BN_bn2dec referenced in function _main   RSA.obj RSA
Error   3   error LNK2019: unresolved external symbol _BN_num_bits referenced in function _main RSA.obj RSA
Error   4   error LNK2019: unresolved external symbol _BN_generate_prime referenced in function _main   RSA.obj RSA
Error   5   error LNK2019: unresolved external symbol _BN_new referenced in function _main  RSA.obj RSA
Error   6   fatal error LNK1120: 5 unresolved externals C:\Visual Studio 2008\Projects\RSA\Debug\RSA.exe    RSA

【问题讨论】:

    标签: visual-studio-2008 visual-c++ openssl


    【解决方案1】:

    您还需要将库名称指定为“附加依赖项”。

    在项目中 |属性,你需要去链接器|输入。在 Additional Dependencies 中,您需要提供库的名称。

    更新

    你想链接 libeay32.lib 和 ssleay32.lib。

    您可能有多个版本,称为 libeayMT.lib 或 libeayMDd.lib。这些是针对不同版本的运行时库构建的,您希望选择与您构建程序的方式相匹配的版本。您也可以在 C/C++ | 的属性对话框中找到它。代码生成 |运行时库。

    【讨论】:

    • 谢谢,我这样做了,但现在我收到此错误 1 ​​致命错误 LNK1104: cannot open file 'C:\OpenSSL.obj' RSA RSA there is no OpenSSL.obj at this location.跨度>
    • 该文件将是 .lib,而不是 .obj 文件。查看您添加的库路径以查看文件的名称。
    • 我不知道我提到了什么库。我仍然收到此错误 Error 1 error LNK2001: unresolved external symbol _BN_free RSA.obj RSA Error 2 error LNK2001: unresolved external symbol _BN_num_bits RSA.obj RSA Error 3 error LNK2001: unresolved external symbol _BN_bn2dec RSA.obj RSA Error 4 error LNK2001 :未解析的外部符号_BN_new RSA.obj RSA错误5错误LNK2001:未解析的外部符号_BN_generate_prime RSA.obj RSA错误6致命错误LNK1120:5未解析的外部只是链接器错误已从LNK2019更改为LNK2001
    • 这里有很多 .lib 文件,我正在尝试在 openssl 文档中查找任何帮助,但到目前为止还没有运气
    • 我很抱歉,仍然给我链接器错误,发现是使用 MD 还是 MT,将这些库添加到“附加依赖项”,但仍然继续收到链接器错误.. .....非常感谢您的所有帮助!
    【解决方案2】:

    OpenSSL 默认为Multithreaded DLL (/MD)。就像 Klatchko 之前说的,你应该先把你的 Runtime Library 设置为 /MD 并在 Linker | Additional Dependencies 下添加对应的 libeay32MD.lib 和 ssleay32MD.lib (它们在我电脑的 \Microsoft Visual Studio 9.0\VC\lib 中)输入。 (确保首先将这些 .lib 文件复制到正确的目录!)

    我遇到了同样的问题,我就是这样解决的!

    顺便说一句,我使用 Windows 的 OpenSSL 二进制版本。您可以在 OpenSSL 官方网站的相关/二进制文件下找到它。

    干杯!

    禅宗

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2017-05-15
      • 2014-03-26
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多