Я использую Visual Studio 2017 и пытаюсь создать ссылку на openssl 1.0.2, созданную мной как 64-битную статическую библиотеку Release, как показано здесь . На самом деле это моя библиотека (также статическая), которая использует функции openssl напрямую, а исполняемый файл ссылается на эту библиотеку. Я попробовал два подхода:
- Поместить символы openssl в mylib.lib (используя вкладку в свойствах проекта VS mylib, которая называется "Библиотекарь")
- Ссылка на openssl (libeay32.lib, ssleay32.lib) и на мою lib с использованием Linker в проекте исполняемого файла
Обе приводят к ошибкам компоновщика, таким как
error LNK2001: unresolved external symbol EVP_EncryptInit_ex
относительно библиотеки mylib.lib.
Я посмотрел на libeay32.lib (также в mylib.lib при использовании подхода Librarian), используя dumpbin.exe
, предоставленный Visual Studio, и определен символ _EVP_EncryptInit_ex
(обратите внимание на _
в начале). Поэтому мне интересно, возможно ли, что openssl определяет _EVP_EncryptInit_ex
, а исполняемый файл пытается связать с EVP_EncryptInit_ex
? Что может быть причиной и решением? Также: Как я могу точно проверить, какие символы можно использовать при попытке ссылки?