windows系统+vs2017+cmake
之前已经尝试过在QT上配置环境。但就算编译通过以后,仍然会出现闪退,错误返回值的情况,所以笔者尝试使用官方教程的方法,一步步构建VS2017的环境,期间也踩了一些坑,在这里总结一下和大家分享。
参考教程:
https://pytorch.org/cppdocs/installing.html
CMake is an open-source, cross-platform family of tools designed to build, test and package software.
CMake作为一款用于C++环境配置的神器,建议大家在初次使用某些库的时候,如果官方给出了CMake配置方法,建议直接通过这种方式进行构建,会省下不少时间的。
1. 首先在Pytorch官网下载torchlib
2.构建这样一个文件夹
example-app/
CMakeLists.txt
example-app.cpp
笔者的目录是:
vsproject/
CMakeLists.txt
example-app.cpp
在CMakeLists.txt写入,里面参数不需要改:
project(example-app)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
add_executable(example-app example-app.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 14)
# The following code block is suggested to be used on Windows.
# According to https://github.com/pytorch/pytorch/issues/25457,
# the DLLs need to be copied to avoid memory errors.
if (MSVC)
file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")
add_custom_command(TARGET example-app
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${TORCH_DLLS}
$<TARGET_FILE_DIR:example-app>)
endif (MSVC)
在example-app.cpp写入:
#include <torch/torch.h>
#include <iostream>
int main() {
torch::Tensor tensor = torch::rand({2, 3});
std::cout << tensor << std::endl;
}
3. 打开CMake-GUI,没有就先下载一个
设置参数如下:
这里vsproject就是example-app,一样的。
然后点击config,我选择的是vs2017+win64
随后会出现红色的错误信息,但是不用担心。
这是因为libtorch的地址没有传入,我们使用命令行进行编译!我们进到build文件夹中,然后运行如下命令行:(后面有两个点,Cmake GUI不要关闭!)
4.使用命令行generate
- 首先cmd进入到该目录下,输入
.mkdir build
创建build文件夹
不要进入build文件夹,否则会报错!如下图 - 正确的做法是在CMakeList.txt的目录下,输入以下指令
cmake -DCMAKE_PREFIX_PATH=输入你解压libtorch的文件夹的绝对路径!
笔者路径如下
注意两个点,一个是要cd到你创建项目的CMakeList.txt的路径下,其次是后面的路径设置时解压后的路径,不要进入/lib之类的子路径哦!
- 出现这个就完成拉!
工程如下:
打开example-app.sin就可以愉快地编程拉。
注意要把其他两个项目(ALL_BUILD,ZERO_CHECK)给移除哦!
如果需要QT教程请查看笔者的上一篇博文。如果有帮助麻烦点个赞!!
可能出现的其他错误!
这时候去网上下载一个dll文件即可。
https://cn.dll-files.com/vcruntime140_1d.dll.html (虽然网上有的说安装vc2015可以解决,但是笔者尝试在windows官网下载Visual C++ 2015,2017,2019的exe仍然修复不了该错误。)
所以建议大家直接下载dll文件放到该目录下即可:
C:\Windows\System32
有问题欢迎交流,如果有帮助麻烦点个赞!!