在 Windows 中通过 Eclipse 使用 CMake 的 LibTorch:终止退出值 390

Posted

技术标签:

【中文标题】在 Windows 中通过 Eclipse 使用 CMake 的 LibTorch:终止退出值 390【英文标题】:LibTorch with CMake via Eclipse in Windows:Terminated exit value 390 【发布时间】:2019-05-21 06:23:03 【问题描述】:

我使用 cmake4eclipse 在 Windows 10 中构建了稳定的 Torch C++ 1.0 版。基本上,我有以下CMakeLists.txt 来构建mnist 示例:

cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(mnist)

set(CMAKE_PREFIX_PATH "C:/rl/libtorch/share/cmake/Torch")
set(Torch_DIR "C:/rl/libtorch")

find_package(Torch REQUIRED)

option(DOWNLOAD_MNIST "Download the MNIST dataset from the internet" ON)
if (DOWNLOAD_MNIST)
  message(STATUS "Downloading MNIST dataset")
  execute_process(
    COMMAND python $CMAKE_CURRENT_LIST_DIR/download_mnist.py
      -d $CMAKE_BINARY_DIR/data
    ERROR_VARIABLE DOWNLOAD_ERROR)
  if (DOWNLOAD_ERROR)
    message(FATAL_ERROR "Error downloading MNIST dataset: $DOWNLOAD_ERROR")
  endif()
endif()

set(CMAKE_BUILD_TYPE Debug) 
add_executable(mnist mnist.cpp)
target_compile_features(mnist PUBLIC cxx_range_for)
set_property(TARGET mnist PROPERTY CXX_STANDARD 14)
target_link_libraries(mnist $TORCH_LIBRARIES)

然后,我将其与mnist.cppdownload_mnist.py 文件一起加载到一个文件夹中,并在eclipse IDE for C/C++ 版本2018-09 (4.9.0) 中启动一个项目。在project_properties->C/C++ Build->Tool Chain Editor中,我设置CMake Builder (GNU Make)并选择MinGW GCC。然后,在project_properties->C/C++ General->Preprocessor Include Paths Macros etc.->Providers中,我选择CMAKE_EXPORT_COMPILE_COMMANDS Parser [Shared]并将其向上移动,正如here所解释的那样。

然后,我可以编译mnist 项目而不会出现任何错误。但是,当我运行它时得到<terminated> (exit value 390) a.exe [some address]。我试图调试此代码以找出问题,但我看不到调试屏幕,而是得到:

将调试模式运行到最后会导致相同的错误。 我可以在 Linux 中毫无问题地运行 mnist.cpp,尽管我使用 cmake -G "Eclipse CDT4 - Unix Makefiles" ./ 创建了一个 eclipse 项目。我不知道如何在 Windows 中使用 cmake -G "Eclipse CDT4 - Unix Makefiles" ./,而我使用了 cmake4eclipse,我相信我错过了在 Windows 中处理 CMakeLists.txt 文件的步骤。我感谢任何帮助或 cmets。

谢谢, 阿夫辛

【问题讨论】:

【参考方案1】:

我在 torch git 中问了同样的问题,今天我得到了答案。目前看来,我们将无法使用 MinGw 通过 Eclipse 运行 Libtorch。这是我从 torch git page 得到的答案:

“我认为你不能用 MinGW 构建它,因为代码是用 c++ 编写的,而 MinGW 与 MSVC 不兼容。所以我认为你可能需要用 MSVC 编译。而且在 MSVC 中,配置debug 和 release 不能混用。所以你必须选择 Release,因为我们只提供带有 Release 配置的库。"

查看更多详情: https://github.com/pytorch/pytorch/issues/15711

【讨论】:

以上是关于在 Windows 中通过 Eclipse 使用 CMake 的 LibTorch:终止退出值 390的主要内容,如果未能解决你的问题,请参考以下文章

使用套接字在eclipse android程序中通过IP地址发送消息

如何在eclipse中通过Juit进行单元测试

jmeter中通过beanshell访问eclipse中导出jar中的java类的方法

错误 - 在 windows 10/8.1 机器中通过 anaconda 使用 python pyspark

在 Apache Spark 中通过管道运行 Windows 批处理文件

在 Qt 中通过 Windows GDI 绘图