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,没有就先下载一个

设置参数如下:

pytorch属于嵌入式么 pytorch支持c++吗_pytorch属于嵌入式么


这里vsproject就是example-app,一样的。

然后点击config,我选择的是vs2017+win64

pytorch属于嵌入式么 pytorch支持c++吗_windows_02


随后会出现红色的错误信息,但是不用担心。

这是因为libtorch的地址没有传入,我们使用命令行进行编译!我们进到build文件夹中,然后运行如下命令行:(后面有两个点,Cmake GUI不要关闭!)

4.使用命令行generate
  1. 首先cmd进入到该目录下,输入
    . mkdir build 创建build文件夹
    不要进入build文件夹,否则会报错!如下图
  2. pytorch属于嵌入式么 pytorch支持c++吗_pytorch属于嵌入式么_03

  3. 正确的做法是在CMakeList.txt的目录下,输入以下指令
    cmake -DCMAKE_PREFIX_PATH=输入你解压libtorch的文件夹的绝对路径! 笔者路径如下
  4. pytorch属于嵌入式么 pytorch支持c++吗_pytorch_04

注意两个点,一个是要cd到你创建项目的CMakeList.txt的路径下,其次是后面的路径设置时解压后的路径,不要进入/lib之类的子路径哦!

pytorch属于嵌入式么 pytorch支持c++吗_环境配置_05

  1. 出现这个就完成拉!

pytorch属于嵌入式么 pytorch支持c++吗_pytorch_06


工程如下:

pytorch属于嵌入式么 pytorch支持c++吗_pytorch_07


打开example-app.sin就可以愉快地编程拉。

注意要把其他两个项目(ALL_BUILD,ZERO_CHECK)给移除哦!

如果需要QT教程请查看笔者的上一篇博文。如果有帮助麻烦点个赞!!

可能出现的其他错误!

pytorch属于嵌入式么 pytorch支持c++吗_pytorch属于嵌入式么_08


这时候去网上下载一个dll文件即可。

https://cn.dll-files.com/vcruntime140_1d.dll.html (虽然网上有的说安装vc2015可以解决,但是笔者尝试在windows官网下载Visual C++ 2015,2017,2019的exe仍然修复不了该错误。)

pytorch属于嵌入式么 pytorch支持c++吗_pytorch_09


所以建议大家直接下载dll文件放到该目录下即可:

C:\Windows\System32

有问题欢迎交流,如果有帮助麻烦点个赞!!