drogonframework / drogonframework/drogon

Link Error With Torch Library

Open
#1,005 14 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
14.3k
Forks
1.4k
Avg merge
1d 13h
Merged PRs (30d)
14

Description

**Describe the bug**
I am trying to bind a simple example software with drogon as interface, and torch is involved as core ML function.

**To Reproduce**
Steps to reproduce the behavior:
1. create a default drogon controller
2. add torch library in CMakeList.txt file
3. cmake --build
4. See error like below

```
/usr/bin/c++ -D_GLIBCXX_USE_CXX11_ABI=0 CMakeFiles/CppModelServ.dir/main.cc.o CMakeFiles/CppModelServ.dir/controllers/MmsCtrl.cc.o -o CppModelServ -Wl,-rpath,/usr/local/libtorch/lib:/usr/local/cuda/lib64/stubs:/usr/local/cuda/lib64 /usr/local/lib/libdrogon.a /usr/local/libtorch/lib/libtorch.so /usr/local/libtorch/lib/libc10.so /usr/local/libtorch/lib/libkineto.a /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/libnvrtc.so /usr/local/cuda/lib64/libnvToolsExt.so /usr/local/cuda/lib64/libcudart.so /usr/local/libtorch/lib/libc10_cuda.so /usr/local/lib/libtrantor.a -ldl -lstdc++fs /usr/lib/x86_64-linux-gnu/libjsoncpp.so /usr/lib/x86_64-linux-gnu/libuuid.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so -lpthread -Wl,--no-as-needed,"/usr/local/libtorch/lib/libtorch_cpu.so" -Wl,--as-needed -Wl,--no-as-needed,"/usr/local/libtorch/lib/libtorch_cuda.so" -Wl,--as-needed /usr/local/libtorch/lib/libc10_cuda.so /usr/local/libtorch/lib/libc10.so /usr/local/cuda/lib64/libcufft.so /usr/local/cuda/lib64/libcurand.so /usr/local/cuda/lib64/libcublas.so /usr/lib/x86_64-linux-gnu/libcudnn.so -Wl,--no-as-needed,"/usr/local/libtorch/lib/libtorch.so" -Wl,--as-needed /usr/local/cuda/lib64/libnvToolsExt.so /usr/local/cuda/lib64/libcudart.so
/usr/bin/ld: CMakeFiles/CppModelServ.dir/main.cc.o: in function `std::enable_if::value, void>::type drogon::DrObject::DrAllocator::registerClass()':
main.cc:(.text._ZN6drogon8DrObjectINS_6plugin12AccessLoggerEE11DrAllocator13registerClassIS2_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv[_ZN6drogon8DrObjectINS_6plugin12AccessLoggerEE11DrAllocator13registerClassIS2_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv]+0x46): undefined reference to `drogon::DrClassMap::registerClass(std::string const&, std::function const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/main.cc.o: in function `std::enable_if::value, void>::type drogon::DrObject::DrAllocator::registerClass()':
main.cc:(.text._ZN6drogon8DrObjectINS_6plugin19SecureSSLRedirectorEE11DrAllocator13registerClassIS2_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv[_ZN6drogon8DrObjectINS_6plugin19SecureSSLRedirectorEE11DrAllocator13registerClassIS2_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv]+0x46): undefined reference to `drogon::DrClassMap::registerClass(std::string const&, std::function const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/main.cc.o: in function `std::enable_if::value, void>::type drogon::DrObject::DrAllocator::registerClass()':
main.cc:(.text._ZN6drogon8DrObjectINS_8NotFoundEE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv[_ZN6drogon8DrObjectINS_8NotFoundEE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv]+0x46): undefined reference to `drogon::DrClassMap::registerClass(std::string const&, std::function const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/main.cc.o: in function `std::enable_if::value, void>::type drogon::DrObject::DrAllocator::registerClass()':
main.cc:(.text._ZN6drogon8DrObjectINS_15LocalHostFilterEE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv[_ZN6drogon8DrObjectINS_15LocalHostFilterEE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv]+0x46): undefined reference to `drogon::DrClassMap::registerClass(std::string const&, std::function const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/main.cc.o: in function `std::enable_if::value, void>::type drogon::DrObject::DrAllocator::registerClass()':
main.cc:(.text._ZN6drogon8DrObjectINS_16IntranetIpFilterEE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv[_ZN6drogon8DrObjectINS_16IntranetIpFilterEE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv]+0x46): undefined reference to `drogon::DrClassMap::registerClass(std::string const&, std::function const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/controllers/MmsCtrl.cc.o: in function `MmsCtrl::get(std::shared_ptr const&, std::function const&)>&&, std::string) const':
MmsCtrl.cc:(.text+0x12a): undefined reference to `Json::Value::Value(std::string const&)'
/usr/bin/ld: MmsCtrl.cc:(.text+0x1ba): undefined reference to `Json::Value::Value(std::string const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/controllers/MmsCtrl.cc.o: in function `MmsCtrl::list(std::shared_ptr const&, std::function const&)>&&) const':
MmsCtrl.cc:(.text+0x494): undefined reference to `Json::Value::Value(std::string const&)'
/usr/bin/ld: MmsCtrl.cc:(.text+0x55c): undefined reference to `Json::Value::Value(std::string const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/controllers/MmsCtrl.cc.o: in function `MmsCtrl::invoke(std::shared_ptr const&, std::function const&)>&&, std::string) const':
MmsCtrl.cc:(.text+0xdc8): undefined reference to `drogon::utils::getUuid()'
/usr/bin/ld: MmsCtrl.cc:(.text+0xde1): undefined reference to `Json::Value::Value(std::string const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/controllers/MmsCtrl.cc.o: in function `std::enable_if::value, void>::type drogon::DrObject::DrAllocator::registerClass()':
MmsCtrl.cc:(.text._ZN6drogon8DrObjectI7MmsCtrlE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv[_ZN6drogon8DrObjectI7MmsCtrlE11DrAllocator13registerClassIS1_EENSt9enable_ifIXsrSt24is_default_constructibleIT_E5valueEvE4typeEv]+0x46): undefined reference to `drogon::DrClassMap::registerClass(std::string const&, std::function const&)'
/usr/bin/ld: CMakeFiles/CppModelServ.dir/controllers/MmsCtrl.cc.o: in function `std::shared_ptr drogon::DrClassMap::getSingleInstance()':
MmsCtrl.cc:(.text._ZN6drogon10DrClassMap17getSingleInstanceI7MmsCtrlEESt10shared_ptrIT_Ev[_ZN6drogon10DrClassMap17getSingleInstanceI7MmsCtrlEESt10shared_ptrIT_Ev]+0x56): undefined reference to `drogon::DrClassMap::getSingleInstance(std::string const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/CppModelServ.dir/build.make:136: CppModelServ] Error 1
make[2]: Leaving directory '/mnt/cpp-model-serv.git'
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/CppModelServ.dir/all] Error 2
make[1]: Leaving directory '/mnt/cpp-model-serv.git'
make: *** [Makefile:91: all] Error 2
```

**Expected behavior**
build pass

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional context**
Add any other context about the problem here.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.