Проблема со связыванием torch и hdf5 lib вместе - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь настроить свой проект на C ++ с использованием файлов HDF5 и pyTorch (C ++ API), и есть некоторые проблемы с линковкой.

Итак ... Я запускаю Ubuntu 18.04 LTS.Я установил HDF5 с APT, затем я загружаю zip из pyTorch и помещаю его в каталог Third_party в структуре моего проекта.

project/   
--data/  
----data.h5  
--third_party/  
----libtorch/  
--main.cpp  
--CMakeLists.txt  
--run.sh 

Мой main.cpp выглядит так:

#include <iostream>
#include <torch/torch.h>
#include "H5Cpp.h"

#define PRINT(x) std::cout<<x<<std::endl;

const H5std_string FILE_NAME("real/path/to/project/data/data.h5");

int main() {

    // Create a vector of inputs.
    std::vector<torch::jit::IValue> inputs;
    inputs.push_back(torch::ones({1, 3, 3, 3}));

    H5::H5File file(FILE_NAME, H5F_ACC_RDONLY);
}

ЗатемCMakeLists:

project(cpptorch)

set(CMAKE_CXX_STANDARD 14)

# pyTorch
find_package(Torch REQUIRED)

# HDF5
find_package(HDF5 REQUIRED COMPONENTS C CXX HL REQUIRED)
include_directories( ${HDF5_INCLUDE_DIRS} )
link_directories( ${HDF5_LIBRARY_DIRS} )

add_executable(cpptorch main.cpp)

target_link_libraries(cpptorch ${HDF5_CXX_LIBRARIES})
target_link_libraries(cpptorch ${TORCH_LIBRARIES})

И запустите .sh

parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )

mkdir -p ${parent_path}/build
cd ${parent_path}/build
echo ${parent_path}
cmake -DCMAKE_PREFIX_PATH=${parent_path}/third_party/libtorch ..
make 
./cpptorch 
cd ..

А теперь я опишу проблему.Например, когда в CMake я закомментирую все строки, связанные с HDF5, то torch работает нормально, то же самое, когда я закомментирую строки Torch в CMake - HDF5 работает хорошо.Но когда я пытаюсь запустить приведенный выше код, я получаю ошибки:

CMakeFiles/cpptorch.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x5b): undefined reference to `H5::H5File::H5File(std::string const&, unsigned int, H5::FileCreatPropList const&, H5::FileAccPropList const&)'
collect2: error: ld returned 1 exit status
CMakeFiles/cpptorch.dir/build.make:92: recipe for target 'cpptorch' failed
make[2]: *** [cpptorch] Error 1
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/cpptorch.dir/all' failed
make[1]: *** [CMakeFiles/cpptorch.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
./run.sh: line 8: ./cpptorch: No such file or directory

Если у кого-нибудь есть идеи, как это решить?Я считаю это проблемой связывания, но я не уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...