ошибка при попытке сделать мой проект C ++ с использованием CPR и библиотеки TorchScript - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь использовать CPR для получения Post Request от API, но когда я делаю свой проект с использованием Cmake, он всегда выдает ошибку. Давайте посмотрим на мой CMakeList.txt, код и ошибку.

Любые идеи очень хороши для меня. Заранее благодарю моих братьев.

CMakeList.txt

cmake_minimum_required(VERSION 3.15)
project(Preprocessing)

add_subdirectory(cpr)

add_executable(Preprocessing main.cpp)

set(CMAKE_PREFIX_PATH "/home/bao/CLionProjects/Preprocessing/libtorch/share/cmake/Torch")
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")

target_link_libraries(Preprocessing ${CPR_LIBRARIES} ${TORCH_LIBRARIES})
include_directories(${CPR_INCLUDE_DIRS})

set_property(TARGET Preprocessing PROPERTY CXX_STANDARD 11)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS} ${CPR_CXX_FLAGS}")

set(CMAKE_CXX_STANDARD 11)

мой код:

void query_split_text_service (std::string s){
    json j;
    j["sentence"] = s;

    std::cout<< j << std::endl;

    auto r = cpr::Post(cpr::Url{"http://127.0.0.1:8880/nlp/tone"},
                        cpr::Body{j.dump()}
    );
    std::cout << r.text << std::endl;
}

и ошибка:

[ 78%] Linking CXX executable Preprocessing
CMakeFiles/Preprocessing.dir/main.cpp.o: In function `void cpr::priv::set_option<std::string>(cpr::Session&, std::string&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionISsEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionISsEEvRNS_7SessionEOT_]+0x2a): undefined reference to `cpr::Session::SetOption(std::string const&)'
collect2: error: ld returned 1 exit status
CMakeFiles/Preprocessing.dir/build.make:91: recipe for target 'Preprocessing' failed
make[2]: *** [Preprocessing] Error 1
CMakeFiles/Makefile2:346: recipe for target 'CMakeFiles/Preprocessing.dir/all' failed
make[1]: *** [CMakeFiles/Preprocessing.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

но если закомментируйте несколько строк, чудо, что я могу сделать свой проект и запустить его.

void query_split_text_service (std::string s){
    json j;
    j["sentence"] = s;

    std::cout<< j << std::endl;

//    auto r = cpr::Post(cpr::Url{"http://127.0.0.1:8880/nlp/tone"},
//                        cpr::Body{j.dump()}
//    );
//    std::cout << r.text << std::endl;
}
...