- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 curlcpp 和 cmake 的帮助下用 C++ 做一个项目,但我无法编译该项目。
我是 CMakeLists 的新手,很难理解如何添加使项目正常运行所需的内容。我基本上通常会在没有真正理解它们是如何工作的情况下复制我在其他帖子中可以找到的内容;教程和文档通常要么过于基础,要么过于复杂。更糟糕的是,我的印象是每个库的添加方式都不同,所以当有新的库要添加时,我必须添加的唯一方法是搜索以前的帖子询问如何做。在这种情况下,我找不到任何对我有帮助的东西。
所以这是我所做的:
用 homebrew 安装 curlpp 和 curl 之后
brew install curl
brew install curlpp
我写我的项目:
Cmakelists.txt:
cmake_minimum_required(VERSION 3.0)
project(stock_analysis)
set(CMAKE_CXX_FLAGS "-g -Wall -std=c++11")
######## BOOST STUFF ########
#DELETE NEXT LINE
set(Boost_NO_BOOST_CMAKE ON)
# set(Boost_USE_STATIC_LIBS ON) # only find static libs
# set(Boost_USE_MULTITHREADED ON)
# set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost COMPONENTS
filesystem
)
######## CURL STUFF ########
include(FindCURL)
find_package(CURL REQUIRED)
if(CURL_FOUND)
message(STATUS "Found CURL version: ${CURL_VERSION_STRING}")
message(STATUS "Using CURL include dir(s): ${CURL_INCLUDE_DIRS}")
message(STATUS "Using CURL lib(s): ${CURL_LIBRARIES}")
else()
message(FATAL_ERROR "Could not find CURL")
endif()
SET(HEADERS
include
)
SET(SOURCE_FILES
src/main.cpp
src/analyse.cpp
src/helpers.cpp
src/simulation.cpp
src/data.cpp
)
include_directories(${HEADERS}
${Boost_INCLUDE_DIRS}
${CURL_INCLUDE_DIRS}
)
add_executable(app ${SOURCE_FILES})
target_link_libraries(app
${Boost_LIBRARIES}
${CURL_LIBRARIES}
)
data.cpp中的函数(我基本上是复制curlcpp网页中的例子):
#include "data.h"
#include <iostream>
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
using namespace curlpp::options;
void fetchData(){
try
{
// That's all that is needed to do cleanup of used resources (RAII style).
curlpp::Cleanup myCleanup;
// Our request to be sent.
curlpp::Easy myRequest;
// Set the URL.
myRequest.setOpt<Url>("http://example.com");
// Send request and get a result.
// By default the result goes to standard output.
myRequest.perform();
}
catch( curlpp::RuntimeError &e )
{
std::cout << e.what() << std::endl;
}
catch( curlpp::LogicError &e )
{
std::cout << e.what() << std::endl;
}
}
我得到的错误:
Undefined symbols for architecture x86_64:
"curlpp::OptionBase::OptionBase(CURLoption)", referenced from:
curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Option(CURLoption, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in data.cpp.o
"curlpp::OptionBase::~OptionBase()", referenced from:
curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Option(CURLoption, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in data.cpp.o
curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::~Option() in data.cpp.o
"curlpp::UnsetOption::UnsetOption(char const*)", referenced from:
curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::updateMeToOption(curlpp::OptionBase const&) in data.cpp.o
curlpp::OptionTrait<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, (CURLoption)10002>::updateHandleToMe(curlpp::internal::CurlHandle*) const in data.cpp.o
curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::getValue() const in data.cpp.o
"curlpp::RuntimeError::~RuntimeError()", referenced from:
curlpp::UnsetOption::~UnsetOption() in data.cpp.o
"curlpp::libcurlRuntimeAssert(char const*, CURLcode)", referenced from:
void curlpp::internal::CurlHandle::option<void*>(CURLoption, void*) in data.cpp.o
"curlpp::Easy::perform()", referenced from:
StockAnalysis::fetchData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool const&) in data.cpp.o
"curlpp::Easy::Easy()", referenced from:
StockAnalysis::fetchData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool const&) in data.cpp.o
"curlpp::Easy::~Easy()", referenced from:
StockAnalysis::fetchData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool const&) in data.cpp.o
"curlpp::Cleanup::Cleanup()", referenced from:
StockAnalysis::fetchData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool const&) in data.cpp.o
"curlpp::Cleanup::~Cleanup()", referenced from:
StockAnalysis::fetchData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool const&) in data.cpp.o
"curlpp::OptionBase::operator<(curlpp::OptionBase const&) const", referenced from:
vtable for curlpp::OptionTrait<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, (CURLoption)10002> in data.cpp.o
vtable for curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > in data.cpp.o
"typeinfo for curlpp::LogicError", referenced from:
GCC_except_table0 in data.cpp.o
"typeinfo for curlpp::OptionBase", referenced from:
curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::updateMeToOption(curlpp::OptionBase const&) in data.cpp.o
typeinfo for curlpp::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > in data.cpp.o
"typeinfo for curlpp::RuntimeError", referenced from:
GCC_except_table0 in data.cpp.o
typeinfo for curlpp::UnsetOption in data.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [app] Error 1
make[1]: *** [CMakeFiles/app.dir/all] Error 2
make: *** [all] Error 2
我之前关注过下一个话题: Linking curl in a project using CMake
在 cmakelists 中将 curlcpp 添加到 target_link_libraries() 只会出现另一个错误:
ld: library not found for -lcurlpp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [app] Error 1
make[1]: *** [CMakeFiles/app.dir/all] Error 2
make: *** [all] Error 2
顺便说一句,我不明白为什么 curlcpp 会凭空出现,而且没有传统的 cmakelists 符号 ${Some_variable}
最佳答案
像下面这样使用 curlpp(最少代码):
cmake_minimum_required(VERSION 3.14)
project(testCurlPP LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FindPkgConfig)
pkg_check_modules(CURLPP REQUIRED curlpp)
add_executable(testCurlPP
main.cpp
)
target_link_libraries(testCurlPP
${CURLPP_LDFLAGS}
)
注意:在项目中使用之前不要忘记构建和安装 curlpp。
建筑(取最后一个版本)curlpp :
mkdir build
cd build
cmake ..
make -j8
sudo make install
将其位置添加到环境变量中:
LD_LIBRARY_PATH=/usr/local/lib
关于c++ - 将 curlpp 添加到 cmake 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59056392/
当我编译这段代码时: #include #include #include #include int main() { cURLpp :: Cleanup cleanup; s
Ubuntu 15.04、CLion、LibCurl、curl 版本 - 7.38.00。当我编译这段代码时: #include #include #include #include #inc
我编写了一个 C++ 程序并尝试使用 curlpp 通过 SSL 安全地访问 http 服务器。问题是,我无法链接程序。 操作系统:Ubuntu 15.10 错误: /usr/bin/cmake -E
我已经研究了几个小时(就在今天),所以我真的需要一些帮助。我总是在 Windows 环境中编写代码,因此我尝试将 curlpp 添加到我的 Code::Blocks 项目中。 我下载了 curl-7.
我正在使用 Curlpp 向各种网络服务发送请求以发送和接收数据。到目前为止,它运行良好,因为我只将它用于发送/接收 JSON 数据。 现在我遇到这样一种情况,即 Web 服务以二进制形式返回一个 z
我正在调用带有 JSON 负载的 REST WS 来订阅某些事件。服务器使用 HTTP 代码 201 和 HTTP header 中名为 Location 的字段进行响应,其中包含订阅 ID。 例如,
我目前正在使用 curlpp 执行 HTTP 查询,但 curlpp 报告 URL 中存在非法字符。我已经将 URL 问题缩小到一个从配置文件中读取的变量(一行,它只包含所需的信息)。另一个奇怪的事情
这个问题和另一个相似one, concerning pyCURL 当我使用 CURLpp https://stackoverflow.com/questions/1942719/pycurl-tls-
我正在编写一个下载多个文件的程序(目前只有 2 个)。我试图让它使用 ProgressFunction 回调显示每次下载的进度条。我遇到的问题是我无法找到一种方法来区分两个文件之间的进度。现在它正在两
我正在尝试从 vb.net 过渡到 C++,但我一直坚持这一点。我从 here 下载了 curlpp这让我得到了一个 .dll、.exp 和 .lib 文件。我将包含这 3 个文件的目录添加到项目属性
我正在使用 curlpp 接收响应。我指的是 curlpp 网站的这个例子 http://curlpp.org/index.php/examples/64-example-14 .但是我没有得到响应的
我想使用以下 URL 提取维基百科页面的摘要: https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&ex
我正在尝试使用静态 curlpp 库在 VS2008 中构建一个 C++ 控制台应用程序。代码 - 这是 curlpp 示例 00 - 如下所示: #include "stdafx.h" #inclu
如何从 curlpp 请求中检索响应 cookie? 我想存储 HTTP GET 请求的 PHP session 。这是我当前的代码: void Grooveshark::Connection::pr
下面是使用 curl 的简单 test.c 代码: #include #include int main(){ return 0; } 为了编译这段代码,我使用: gcc t
我想在 curlcpp 和 cmake 的帮助下用 C++ 做一个项目,但我无法编译该项目。 我是 CMakeLists 的新手,很难理解如何添加使项目正常运行所需的内容。我基本上通常会在没有真正理解
我想使用 libcurl 和 cURLpp 向服务器发送一个 http POST 请求。当我尝试编译我的程序时,出现了这些错误。我不认为错误来自 libcurl 或 curlpp,所以我一定做错了什么
我是 C++ 的新手,我正在使用 mingw 编译器。最后一行 #include #include #include .... string url ("http://www.google.co
我正在尝试在我的 Xcode C++ 项目中使用 curlpp,但即使我在项目设置中将库添加到目标,我仍被告知“找不到文件”这一行 #include 我可能做错了什么,但我不确定是什么。我关注了so
我想在我的 C++ 项目中使用 curl/curlpp,所以我使用了命令: brew install curl 和 brew install curlpp 没有问题。因此,为了检查它们是否安装正确,我
我是一名优秀的程序员,十分优秀!