我正在开发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.lib
和lib64/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
任何知道“缺失链接”的人?
答案 0 :(得分:0)
在向VS添加外部库时,我通常会尝试包含库源并在我自己的树中构建它们。这避免了我认为你看到的问题,即预编译库的编译选项与主项目略有不同。不同的选项使您无法使用库。
如果您真的不想在项目中编译lib,请尝试进一步调查这些符号以识别编译变体。
答案 1 :(得分:0)
我忘了定义类,函数rsaPrivateDecrypt
属于(对我来说很羞耻)。第二件事是使用32位libs而不是64Bit libs。