C++ 链接到openssl 64位静态库
我正在使用Visual Studio 2017,我正在尝试链接到由我构建的64位版本静态库openssl 1.0.2,如图所示。实际上,我的库(也是静态库)直接使用openssl函数,可执行文件链接到此库。我尝试了两种方法:C++ 链接到openssl 64位静态库,c++,visual-studio,openssl,linker,static-libraries,C++,Visual Studio,Openssl,Linker,Static Libraries,我正在使用Visual Studio 2017,我正在尝试链接到由我构建的64位版本静态库openssl 1.0.2,如图所示。实际上,我的库(也是静态库)直接使用openssl函数,可执行文件链接到此库。我尝试了两种方法: 将openssl的符号放入mylib.lib(使用VS mylib项目属性中名为“Library”的选项卡) 在可执行文件的项目中使用链接器链接到openssl(libeay32.lib,ssleay32.lib)和我的库 两者都会导致链接器错误,如 error LNK
- 将openssl的符号放入mylib.lib(使用VS mylib项目属性中名为“Library”的选项卡)
- 在可执行文件的项目中使用链接器链接到openssl(libeay32.lib,ssleay32.lib)和我的库
error LNK2001: unresolved external symbol EVP_EncryptInit_ex
关于mylib.lib库
我使用Visual Studio提供的
dumpbin.exe
查看了libeay32.lib(在使用图书管理员方法时也查看了mylib.lib),并且定义了\u EVP\u EncryptInit\u ex
(注意begging处的\ucode>)符号。所以我想知道openssl是否可能定义了\u EVP\u EncryptInit\u ex
,并且可执行文件正在尝试链接到EVP\u EncryptInit\u ex
?原因和解决办法是什么?另外:如何检查尝试链接到的符号是否可执行?是的,我知道它来自何处,但错误消息表明可执行文件正在查找符号,而没有前导。
。但是我不知道我在这里是否正确,请发布构建openssl的步骤。解决了,原来我是在初始化VC进行32位构建(vsvars32.bat
),需要ofc 64位设置(vcvars64.bat
)。你的问题迫使我再次查找构建脚本,我得到了启示:)是的,我知道它来自何处,但错误消息表明可执行文件正在查找符号,而没有前导。
。但是我不知道我在这里是否正确,请发布构建openssl的步骤。解决了,原来我是在初始化VC进行32位构建(vsvars32.bat
),需要ofc 64位设置(vcvars64.bat
)。你的问题迫使我再次查阅建筑脚本,我得到启示:)