将openssl链接到visual studio 2013 LNK2019

时间:2015-02-04 14:50:35

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

我正在开发visual studio 2013应用程序,因此我需要包含openssl库。

到目前为止我做了什么:

  • 我从这里下载了VS2013 openssl-1.0.1l-vs2013.7z的预编译openssl库:http://www.npcglib.org/~stathis/blog/precompiled-openssl/(最新稳定条目MSVC2013)

  • 包含openssl的包含dir到C / C ++ / General / Additional Include Directories

  • lib64/libeay32MTd.liblib64/ssleay32MTd.lib添加到链接器/输入/附加依赖项

  • 我以这种方式调用openssl标头:#include <openssl\pem.h>(例如)

我在64位Windows机器上使用VS 2013和多线程运行时库(/ MTd)。每次我想构建我的项目时,它都会给我以下错误:

错误LNK2019: Verweis aufnichtaufgelöstesexternesFunktion中的符号“_BIO_new_mem_buf”“__catch $?decrypt @ cipherEngine @@ QAE?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V'$分配器@ d @ @@ 2 STD @@ @ PADH Z $ 4" 。

错误LNK2019: Verweis aufnichtaufgelöstesexternesFunktion中的符号“_RSA_private_decrypt”“__catch $?decrypt @ cipherEngine @@ QAE?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V'$分配器@ d @ @@ 2 STD @@ @ PADH Z $ 4" 。

错误LNK2019: Verweis aufnichtaufgelöstesexternesFunktion中的符号“_PEM_read_bio_RSAPrivateKey”“__catch $?decrypt @ cipherEngine @@ QAE?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V'$分配器@ d @ @@ 2 STD @@ @ PADH Z $ 4" 。

错误LNK2019: Verweis aufnichtaufgelöstesexternes符号“”public:class std :: basic_string,class std :: allocator&gt; __thiscall cipherEngine :: rsaPrivateDecrypt(class std :: basic_string,class std :: allocator&gt;)“(?rsaPrivateDecrypt @ cipherEngine @@ QAE?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ V23 @@ Z)“在Funktion中”“public:bool __thiscall cipherEngine :: alterKey(class std :: basic_string,class std :: allocator&gt;)”(?alterKey @ cipherEngine @@ QAE_NV ?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@@ Z)”。

致命错误LNK1120: 4nichtaufgelösteExterne

任何知道“缺失链接”的人?

2 个答案:

答案 0 :(得分:0)

在向VS添加外部库时,我通常会尝试包含库源并在我自己的树中构建它们。这避免了我认为你看到的问题,即预编译库的编译选项与主项目略有不同。不同的选项使您无法使用库。

如果您真的不想在项目中编译lib,请尝试进一步调查这些符号以识别编译变体。

答案 1 :(得分:0)

我忘了定义类,函数rsaPrivateDecrypt属于(对我来说很羞耻)。第二件事是使用32位libs而不是64Bit libs。