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

时间:2018-12-20 17:38:26

标签: c++ eclipse cmake torch libtorch

我使用cmake4eclipse构建了Windows 10中稳定的割炬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->工具链编辑器中,我设置了CMake Builder (GNU Make)并选择了MinGW GCC。然后,在 project_properties-> C / C ++ General->预处理器包含路径宏等->提供程序中,选择CMAKE_EXPORT_COMPILE_COMMANDS Parser [Shared]并将其向上移动,如here所述。

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

enter image description here

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

谢谢, 苦参碱

1 个答案:

答案 0 :(得分:0)

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

“我不认为您可以用MinGW来构建代码,因为代码是用c ++编写的,并且MinGW与MSVC不兼容。因此,我认为您可能需要使用MSVC进行编译。而且在MSVC中,配置调试和发布无法混用。因此,您将不得不选择Release,因为我们仅向库提供Release配置。”

有关更多详细信息,请参见: https://github.com/pytorch/pytorch/issues/15711