Использование Cmake для сборки ssh.dll с Visual Studio 2017
Я новичок в C++, и я пытаюсь построить ssh.dll
на Windows 32bit с использованием Visual Studio 2017 и cmake
, Я скачал последнюю версию libssh
и пытался построить ssh.dll
из источника с помощью cmake
после настройки и генерации в соответствии с рекомендуемыми шагами.
После генерации я открыл файл решения libssh в Visual Studio 2017 и собрал его, но во время компиляции он выдал несколько недостающих библиотечных ошибок, которые я решил, добавив эти библиотеки в путь VC.
После добавления этих библиотек он начал давать мне около 600 ошибок компиляции, как показано ниже, связанных с синтаксисом (но синтаксис в этих файлах библиотек выглядит правильно) .
Есть ли способ или предложение, с помощью которого я могу успешно решить их и создать файл.dll?
Ниже приведены некоторые из этих ошибок:
Severity Code Description Project File Line Suppression State
Error C2146 syntax error: missing ')' before identifier 'session' ssh_shared c:\apps\mvs15\vc\tools\msvc\14.10.25017\include\libssh\priv.h 196
Error C2061 syntax error: identifier 'channel' ssh_shared c:\apps\mvs15\vc\tools\msvc\14.10.25017\include\libssh\callbacks.h 64
Error C2059 syntax error: ';' ssh_shared c:\apps\mvs15\vc\tools\msvc\14.10.25017\include\libssh\callbacks.h 64
Error C2146 syntax error: missing ')' before identifier 'fd' ssh_shared c:\apps\mvs15\vc\tools\msvc\14.10.25017\include\libssh\libssh.h 656
Error C2059 syntax error: ')' ssh_shared c:\apps\mvs15\vc\tools\msvc\14.10.25017\include\libssh\libssh.h 597
Error C2081 'socket_t': name in formal parameter list illegal ssh_shared c:\apps\MVS15\VC\Tools\MSVC\14.10.25017\include\libssh\poll.h 135
Error C2059 syntax error: '}' ssh_shared c:\apps\MVS15\VC\Tools\MSVC\14.10.25017\include\libssh\session.h 203
Error C2146 syntax error: missing ')' before identifier 'fd' ssh_shared c:\apps\MVS15\VC\Tools\MSVC\14.10.25017\include\libssh\socket.h 36
Error C2059 syntax error: ';' ssh_shared c:\apps\mvs15\vc\tools\msvc\14.10.25017\include\libssh\callbacks.h 64
Error C2037 left of 'iqmp' specifies undefined struct/union 'rsa_st' ssh_shared C:\apps\vcpkg\downloads\libssh-0.7.6.tar\libssh-0.7.6\src\libcrypto-compat.c 77
Error C2037 left of 'dmq1' specifies undefined struct/union 'rsa_st' ssh_shared C:\apps\vcpkg\downloads\libssh-0.7.6.tar\libssh-0.7.6\src\libcrypto-compat.c 76
Чтобы решить эту проблему, я также попытался заменить сомнительные библиотечные файлы другой версией этих библиотечных файлов, но безуспешно. Может кто-нибудь помочь мне здесь?
1 ответ
Я просто делаю git clone и успешно его создаю.
Вот как я это сделал.
vcpkg install zlib:x64-windows openssh:x64-windows
in the cloned source code
mkdir build
cd build
cmake .. -DCMAKE_GENERATOR_PLATFORM=x64 "-DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake"
Откройте файл решения в Visual Studio 2017, и он успешно собирается.
2> Creating library ssh.lib
2>ssh_shared.vcxproj -> ....\build\src\Debug\ssh.dll
========== Build: 7 succeeded, 0 failed, 0 up-to-date, 4 skipped ==========
Если вы хотите построить для 32-битной архитектуры
vcpkg install zlib openssh
in the cloned source code
mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake"