使用 Cmake 构建 ssh.dll with Visual Studio 2017
Using Cmake to build ssh.dll with Visual Studio 2017
我是 C++ 的初学者,我正在尝试使用 Visual Studio 2017 和 cmake
在 Windows 32 位上构建 ssh.dll
。我已经下载了最新版本的libssh
,并在按照推荐的步骤配置和生成后,尝试使用cmake
从源代码构建ssh.dll
。
生成后,我用 Visual Studio 2017 打开了 libssh 解决方案文件并构建了它,但是在编译它时几乎没有出现缺少库的错误,我通过将这些库添加到 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.10.25017\include\libssh\priv.h 196
Error C2061 syntax error: identifier 'channel' ssh_shared c:\apps\mvs15\vc\tools\msvc.10.25017\include\libssh\callbacks.h 64
Error C2059 syntax error: ';' ssh_shared c:\apps\mvs15\vc\tools\msvc.10.25017\include\libssh\callbacks.h 64
Error C2146 syntax error: missing ')' before identifier 'fd' ssh_shared c:\apps\mvs15\vc\tools\msvc.10.25017\include\libssh\libssh.h 656
Error C2059 syntax error: ')' ssh_shared c:\apps\mvs15\vc\tools\msvc.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.10.25017\include\libssh\poll.h 135
Error C2059 syntax error: '}' ssh_shared c:\apps\MVS15\VC\Tools\MSVC.10.25017\include\libssh\session.h 203
Error C2146 syntax error: missing ')' before identifier 'fd' ssh_shared c:\apps\MVS15\VC\Tools\MSVC.10.25017\include\libssh\socket.h 36
Error C2059 syntax error: ';' ssh_shared c:\apps\mvs15\vc\tools\msvc.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
为了解决这个问题,我也尝试用这些库文件的其他版本替换有问题的库文件,但没有成功。接下来我可以尝试什么?
我只是 git 一个 git 克隆并成功构建它。
这是我的做法。
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"
我是 C++ 的初学者,我正在尝试使用 Visual Studio 2017 和 cmake
在 Windows 32 位上构建 ssh.dll
。我已经下载了最新版本的libssh
,并在按照推荐的步骤配置和生成后,尝试使用cmake
从源代码构建ssh.dll
。
生成后,我用 Visual Studio 2017 打开了 libssh 解决方案文件并构建了它,但是在编译它时几乎没有出现缺少库的错误,我通过将这些库添加到 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.10.25017\include\libssh\priv.h 196
Error C2061 syntax error: identifier 'channel' ssh_shared c:\apps\mvs15\vc\tools\msvc.10.25017\include\libssh\callbacks.h 64
Error C2059 syntax error: ';' ssh_shared c:\apps\mvs15\vc\tools\msvc.10.25017\include\libssh\callbacks.h 64
Error C2146 syntax error: missing ')' before identifier 'fd' ssh_shared c:\apps\mvs15\vc\tools\msvc.10.25017\include\libssh\libssh.h 656
Error C2059 syntax error: ')' ssh_shared c:\apps\mvs15\vc\tools\msvc.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.10.25017\include\libssh\poll.h 135
Error C2059 syntax error: '}' ssh_shared c:\apps\MVS15\VC\Tools\MSVC.10.25017\include\libssh\session.h 203
Error C2146 syntax error: missing ')' before identifier 'fd' ssh_shared c:\apps\MVS15\VC\Tools\MSVC.10.25017\include\libssh\socket.h 36
Error C2059 syntax error: ';' ssh_shared c:\apps\mvs15\vc\tools\msvc.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
为了解决这个问题,我也尝试用这些库文件的其他版本替换有问题的库文件,但没有成功。接下来我可以尝试什么?
我只是 git 一个 git 克隆并成功构建它。
这是我的做法。
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"