- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用一些 curl 代码来测试库,但我无法编译它:(
我正在使用 Clion (Cmake + gcc),我有一个 libcurl.a、一个 libcurl.dll 和一个 libcurl.dlla我应该如何处理这 3 个文件?
这是我的 CmakeLists.txt :
cmake_minimum_required(VERSION 3.10)
project(curl_test2 C)
set(CMAKE_C_STANDARD 99)
ADD_DEFINITIONS( -DCURL_STATICLIB )
include_directories( "include" )
set(SRCS"
srcs/main.c")
set(HEADERS
"include/curl/curl.h"
"include/curl/easy.h")
link_directories("lib")
add_executable(curl_test2 ${SRCS} ${HEADERS})
target_link_libraries(curl_test2 "curl")
这是我的项目:
include
--curl
--curl.h
srcs
--main.c
lib
--libcurl.a
(--dlls
--libcurl.dll
--libcurl.dlla) <- i'm not using them for now
这是我的 main.c(只是一个 libcurl 示例,不是很重要 - 我只是想编译):
#include <stdio.h>
#include "curl/curl.h"
int main(void)
{
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
当我尝试构建编译器时删除此错误:“对 `_imp__curl_global_init' 的 undefined reference ”(以及所有其他 curl 函数调用)
你能帮帮我吗?我有点迷茫——我以前并没有真正使用过 Cmake..
谢谢!
最佳答案
您链接到需要 CURL_STATICLIB 定义的静态 curl 库 (libcurl.a)。在“project”和“add_executable”命令之间的 CMakeLists.txt 中添加:
add_definitions( -DCURL_STATICLIB )
此外,您的文件 .dlla 不是 .dll.a ?在这种情况下,.dll.a 文件(我认为)由 MinGW 工具链生成,并且仅当您动态链接 curl 库(作为 .dll 文件)时才需要。
我下载了 cURL 库的源代码 here并编译它(使用 Visual Compiler 2015)。它生成共享库(libcurl.dll
和 libcurl_imp.lib
),我将其移至 lib 目录(我应该将 libcurl_imp.lib
重命名为 curl.lib
)。我还移动了包含目录。
然后,我使用了这个 CMakeLists.txt
:
cmake_minimum_required(VERSION 3.10)
project(curl_test2 C)
set(CMAKE_C_STANDARD 99)
set(SRCS "srcs/main.c")
set( CURL_LIBRARY ${CMAKE_SOURCE_DIR}/lib )
set( CURL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include )
find_package( CURL )
include_directories( ${CURL_INCLUDE_DIRS} )
link_directories( ${CURL_LIBRARIES} )
add_executable(curl_test2 ${SRCS})
target_link_libraries(curl_test2 curl)
有了它,您的项目就可以编译并执行。
我还尝试使用 cURL 静态库(为此,如果您使用 CMake 编译 cURL,请在 cmake 命令行中添加 -DCURL_STATICLIB=ON
)。我将生成的库 libcurl.lib
移动到 lib\curl.lib
。
我使用了这个 CMakeLists.txt
:
cmake_minimum_required(VERSION 3.10)
project(curl_test2 C)
set(CMAKE_C_STANDARD 99)
set(SRCS "srcs/main.c")
add_definitions( -DCURL_STATICLIB )
set( CURL_LIBRARY ${CMAKE_SOURCE_DIR}/lib )
set( CURL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include )
find_package( CURL )
include_directories( ${CURL_INCLUDE_DIRS} )
link_directories( ${CURL_LIBRARIES} )
add_executable(curl_test2 ${SRCS})
target_link_libraries(curl_test2 curl wldap32 ws2_32)
它也有效。
关于C - Cmake 使用 libcurl 编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778607/
这个问题在这里已经有了答案: multiple definition error c++ (2 个答案) 关闭 3 年前。 我遇到了一些编译问题,这里是详细信息: 假设我声明了一些数据结构 my_d
我正在尝试使用 lessfs 并了解它如何使用 mhash 来生成其加密指纹,所以我正在查看 mhash 以了解它如何处理哈希算法,因此我正在尝试运行中提供的一些示例程序,但我遇到了并发症和错误 我试
所以我有一个编译程序,但我有两个小问题。该程序将十六进制转换为十进制和二进制,并将其显示在这个可爱的小 GUI 中。 问题: 我想将二进制文件放入一个数组中,然后在连续的 5 个小框窗口之间传输。转换
这可能是一个很难用我实际提供的信息进行故障排除的问题,但我希望有人至少能够为我指出一个可能的方向。 我正在尝试安装 HTK ( http://htk.eng.cam.ac.uk/ ),根据 this页
我用客户端松鼠在oracle 11g中创建了一个简单的过程,这是代码 create or replace procedure EXAMPLE_P is begin 1+2; end;/ 在执行
$2有 C 文件的路径。 问题是当我编译一个有错误的文件时,它会显示错误。我不想显示错误,我只想说:“$2 无法编译。”有什么想法吗? cc $2 if test ! $? = 0
我使用安装了 Advanced Tomato 的华硕路由器(基于 ARMv7 proc)在它上面作为我的 ARMv7 开发者平台。我安装编译器 (gcc - 5.4.0-1)加上来自 OpenWRT
我想在 Linux 上用 twitter 库编译一个 C++ 程序。 我目前使用 twitcurl 作为 twitter API 库并安装了 g++ 以及官方网站上列出的所有必要文件和包:http:/
我正在尝试编译使用 libdl 库中的 API 的示例代码: #include #include #include int main(int argc, char **argv) { v
我看到很多人提示 -O3 选项: GCC: program doesn't work with compilation option -O3 Floating Point Problem provid
有如下代码: #include #include int main(void){ CURL *curl; CURLcode res; curl = curl_easy_init();
我们有一个非常重要的应用程序,但到目前为止还没有源代码。该应用程序是用 COBOL 编写的,编译版本在我们的生产系统中并正在运行。 但是,我们需要迁移到新服务器和新的 cobol 编译器。我们的印象是
我正在尝试使用一些 curl 代码来测试库,但我无法编译它:( 我正在使用 Clion (Cmake + gcc),我有一个 libcurl.a、一个 libcurl.dll 和一个 libcurl.
我使用 mingw(Windows 8 64 位,MinGW 20120426)在 Windows 上用 clang 构建了 llvm: ./configure --disable-docs --en
我在 ubuntu 下写了一个程序,其中包含 gtkmozembed.h。我在编译程序时遇到问题。下面是使用 gtkmozembed 的程序的最简单形式。 #include #include #i
我在 Ubuntu 上使用 GNAT 编译了一个 Ada 程序。 之后,我尝试使用该程序进行几次测试,它运行正常。 但是当我将它上传到我的 Apache (UNIX) 网络服务器并尝试运行该程序时,没
我正在尝试通过批处理文件使用 MinGW 编译器运行我的程序。但是当我尝试启动它时,它什么也没说。 代码如下: g++ -o Learning.exe Main.o pause 当我打开 .exe 文
我在 Windows 8 计算机 (x64) 上使用 VS2012 编写了一个 Windows 窗体应用程序,我希望它在 Windows XP x86 上运行。当我尝试运行该程序时出现错误“...不是
我在运行 ArchLinux 的系统上使用 clang 版本 4.0.0,它一直运行良好,但最近我无法再编译使用某些 STL header 的程序了! 详细信息: clang --version 的输
我有程序 main.cpp 调用其他 C++ 程序 file1.cpp、file2.cpp 和 message.txt 请问如何使用 g++ 在 Linux Ubuntu 中编写编译命令,主要不是“v
我是一名优秀的程序员,十分优秀!