无法解析链接错误

Cant resolve linking error

本文关键字:链接 错误      更新时间:2023-10-16

我需要在我的项目中包含代理库。一切都已成功安装。唯一的问题是,项目中有一个链接错误,我无法解决。

我正在工作的操作系统是Ubuntu 14.04。

这是错误日志:

/home/cortana/clion-2016.1.3/bin/cmake/bin/cmake --build /home/cortana/.CLion2016.1/system/cmake/generated/string_from_url-a5f32588/a5f32588/Debug --target tutifruti -- -j 4
[ 33%] Linking CXX executable /home/cortana/ClionProjects/string_from_url/build/tutifruti
CMakeFiles/tutifruti.dir/src/main.cpp.o: In function `main':
/home/cortana/ClionProjects/string_from_url/src/main.cpp:114: undefined reference to `proxygen::HTTPConnector::HTTPConnector(proxygen::HTTPConnector::Callback*, folly::HHWheelTimer*)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:116: undefined reference to `proxygen::HTTPConnector::setPlaintextProtocol(std::string const&)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:126: undefined reference to `proxygen::HTTPConnector::connectSSL(folly::EventBase*, folly::SocketAddress const&, std::shared_ptr<folly::SSLContext> const&, ssl_session_st*, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&, std::string const&)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:134: undefined reference to `proxygen::HTTPConnector::connect(folly::EventBase*, folly::SocketAddress const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&)'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:114: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
/home/cortana/ClionProjects/string_from_url/src/main.cpp:114: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
CMakeFiles/tutifruti.dir/src/CurlClient.cpp.o: In function `CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)':
/home/cortana/ClionProjects/string_from_url/src/CurlClient.cpp:81: undefined reference to `proxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler*)'
collect2: error: ld returned 1 exit status
make[3]: *** [/home/cortana/ClionProjects/string_from_url/build/tutifruti] Error 1
make[2]: *** [CMakeFiles/tutifruti.dir/all] Error 2
make[1]: *** [CMakeFiles/tutifruti.dir/rule] Error 2
make: *** [tutifruti] Error 2

在此处,库已成功添加,但无法将其链接到这些提到的标题。在线检查时,我发现我需要添加所需标头的二进制文件(也包括CPP)。

我的Cmake现在是:

cmake_minimum_required(VERSION 2.8)
project(string_from_url)
find_package(Boost COMPONENTS system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build)
find_package( OpenCV REQUIRED )

set(SOURCE_FILES src/main.cpp)
add_executable(tutifruti ${CMAKE_CURRENT_LIST_DIR}/src/main.cpp src/CurlClient.cpp)
target_link_libraries(tutifruti gflags)
target_link_libraries(tutifruti glog)
target_link_libraries(tutifruti folly)
target_link_libraries(tutifruti proxygenhttpserver)
target_link_libraries(tutifruti SDL2)
target_link_libraries(tutifruti GL)
target_link_libraries(tutifruti GLU)
target_link_libraries(tutifruti glut)
target_link_libraries(tutifruti GLEW)
target_link_libraries(tutifruti wangle)
target_link_libraries(tutifruti pthread)
target_link_libraries(tutifruti config++)
target_link_libraries(tutifruti opencv_core)
target_link_libraries(tutifruti opencv_highgui)
target_link_libraries(tutifruti opencv_imgproc)
target_link_libraries(tutifruti opencv_videoio)
target_link_libraries(tutifruti opencv_objdetect)
target_link_libraries(tutifruti ${OpenCV_LIBS})
target_link_libraries(tutifruti ${Boost_LIBRARIES})

请在这里帮助我:/

编辑:find / -name "*proxygenhttpserver*" -type f的输出:

find: `/sys/kernel/debug': Permission denied
find: `/etc/cups/ssl': Permission denied
find: `/etc/polkit-1/localauthority': Permission denied
find: `/etc/ssl/private': Permission denied
find: `/proc/tty/driver': Permission denied
find: `/proc/1/task/1/fd': Permission denied
find: `/proc/1/task/1/fdinfo': Permission denied
find: `/proc/1/task/1/ns': Permission denied
find: `/proc/1/fd': Permission denied
find: `/proc/1/map_files': Permission denied
find: `/proc/1/fdinfo': Permission denied
find: `/proc/1/ns': Permission denied
find: `/proc/2/task/2/fd': Permission denied
find: `/proc/2/task/2/fdinfo': Permission denied
find: `/proc/2/task/2/ns': Permission denied
find: `/proc/2/fd': Permission denied
find: `/proc/2/map_files': Permission denied
find: `/proc/2/fdinfo': Permission denied
find: `/proc/2/ns': Permission denied
find: `/proc/3/task/3/fd': Permission denied
find: `/proc/3/task/3/fdinfo': Permission denied
find: `/proc/3/task/3/ns': Permission denied
find: `/proc/3/fd': Permission denied
find: `/proc/3/map_files': Permission denied
find: `/proc/3/fdinfo': Permission denied
find: `/proc/3/ns': Permission denied
find: `/proc/5/task/5/fd': Permission denied
find: `/proc/5/task/5/fdinfo': Permission denied
find: `/proc/5/task/5/ns': Permission denied
find: `/proc/5/fd': Permission denied
find: `/proc/5/map_files': Permission denied
find: `/proc/5/fdinfo': Permission denied
find: `/proc/5/ns': Permission denied
find: `/proc/7/task/7/fd': Permission denied
find: `/proc/7/task/7/fdinfo': Permission denied
find: `/proc/7/task/7/ns': Permission denied
find: `/proc/7/fd': Permission denied
find: `/proc/7/map_files': Permission denied
find: `/proc/7/fdinfo': Permission denied
find: `/proc/7/ns': Permission denied
find: `/proc/8/task/8/fd': Permission denied
find: `/proc/8/task/8/fdinfo': Permission denied
find: `/proc/8/task/8/ns': Permission denied
find: `/proc/8/fd': Permission denied
find: `/proc/8/map_files': Permission denied
find: `/proc/8/fdinfo': Permission denied
find: `/proc/8/ns': Permission denied
find: `/proc/9/task/9/fd': Permission denied
find: `/proc/9/task/9/fdinfo': Permission denied
find: `/proc/9/task/9/ns': Permission denied
find: `/proc/9/fd': Permission denied
find: `/proc/9/map_files': Permission denied
find: `/proc/9/fdinfo': Permission denied
find: `/proc/9/ns': Permission denied
find: `/proc/10/task/10/fd': Permission denied
find: `/proc/10/task/10/fdinfo': Permission denied
find: `/proc/10/task/10/ns': Permission denied
find: `/proc/10/fd': Permission denied
find: `/proc/10/map_files': Permission denied
find: `/proc/10/fdinfo': Permission denied
find: `/proc/10/ns': Permission denied
find: `/proc/11/task/11/fd': Permission denied
find: `/proc/11/task/11/fdinfo': Permission denied
find: `/proc/11/task/11/ns': Permission denied
find: `/proc/11/fd': Permission denied
find: `/proc/11/map_files': Permission denied
find: `/proc/11/fdinfo': Permission denied
find: `/proc/11/ns': Permission denied
find: `/proc/12/task/12/fd': Permission denied
find: `/proc/12/task/12/fdinfo': Permission denied
find: `/proc/12/task/12/ns': Permission denied
find: `/proc/12/fd': Permission denied
find: `/proc/12/map_files': Permission denied
find: `/proc/12/fdinfo': Permission denied
find: `/proc/12/ns': Permission denied
find: `/proc/13/task/13/fd': Permission denied
find: `/proc/13/task/13/fdinfo': Permission denied
find: `/proc/13/task/13/ns': Permission denied
find: `/proc/13/fd': Permission denied
find: `/proc/13/map_files': Permission denied
find: `/proc/13/fdinfo': Permission denied
find: `/proc/13/ns': Permission denied

和更多。

您的链接错误是指在proxygen/lib(而不是proxygen/httpserver)下的httpconnector类,因此您可能需要添加

target_link_libraries(tutifruti proxygenlib)

也要到您的CMAKE文件。

更新到添加:我可以在不添加上面库的情况下使用httpmessage,因此我同意kristian cmakelists.txt文件是正确的。我看不到克里斯蒂安(Kristian)与sudo一起跑步的建议的答案。那应该揭示问题。