【问题标题】:Can't get libcurl to link.(Dev-C++)无法让 libcurl 链接。(Dev-C++)
【发布时间】:2017-11-09 15:13:24
【问题描述】:

这是极大焦虑的根源。我似乎无法让它做任何事情。我正在考虑只是破坏整个项目。为什么链接器不工作?

我一直坐着看很多不同的链接,但我不明白如何解决它。我知道我已经正确安装了库,但是,我似乎无法链接它。我在 System32 文件中有 libcurl.dll。然而,我仍然不知道该怎么办。我要疯了,试图让它工作。我在项目选项>目录>库目录、项目选项>目录>包含目录或项目选项>目录>资源目录中没有任何文件。在项目选项>参数>链接器:

"../Program Files (x86)/Dev-Cpp/MinGW64/lib/libcurl.a"

所以,我不知道还能做什么。我已经在这里坐了大约一周,试图自己解决这个问题。我可能应该早点寻求帮助 x.x 也许我缺少 libcurl 的文件,但我对此表示怀疑,因为我下载了整个文件。我不知道是不是我的防火墙 Norton 阻止了它。如果是,我将如何允许权限?我不知道问题是什么。有人可以对此有所了解。我已经从字面上查看了任何人必须在这里提供的每一个解决方案

我的 MakeFile:

# Project: Project1
# Makefile created by Dev-C++ 5.11

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = Project.o
LINKOBJ  = Project.o
LIBS     = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc "../Program Files (x86)/Dev-Cpp/MinGW64/lib/libcurl.a"
INCS     = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN      = Project1.exe
CXXFLAGS = $(CXXINCS) 
CFLAGS   = $(INCS) 
RM       = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
    ${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

Project.o: Project.cpp
    $(CPP) -c Project.cpp -o Project.o $(CXXFLAGS)

源代码:

#include <curl/curl.h>
#include <iostream>

int main( void )
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }
    return 0;
}

不断弹出的错误:

g++.exe Project.o -o Project1.exe -L"C:/Program Files (x86)/Dev-
Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-
mingw32/lib" -static-libgcc "../Program Files (x86)/Dev-
Cpp/MinGW64/lib/libcurl.a"
Project.o:Project.cpp:(.text+0x16): undefined reference to `__imp_curl_easy_init'
Project.o:Project.cpp:(.text+0x41): undefined reference to `__imp_curl_easy_setopt'
Project.o:Project.cpp:(.text+0x5c): undefined reference to `__imp_curl_easy_setopt'
Project.o:Project.cpp:(.text+0x6c): undefined reference to `__imp_curl_easy_perform'
Project.o:Project.cpp:(.text+0x83): undefined reference to `__imp_curl_easy_strerror'
Project.o:Project.cpp:(.text+0xb5): undefined reference to `__imp_curl_easy_cleanup'
collect2.exe: error: ld returned 1 exit status
C:\Projects\Makefile.win:25: recipe for target 'Project1.exe' failed
mingw32-make.exe: *** [Project1.exe] Error 1

【问题讨论】:

  • 离题:未来问题和答案的注意事项:&lt;code&gt; 标签什么都不做 四空格缩进(或 ctrl+k)是代码格式化的魔力。
  • 主题:您的编译器命令行在"../Program Files (x86)/Dev- Cpp/MinGW64/lib/libcurl.a"前面缺少-l(链接以下库)
  • 您为 2 种不同的语言添加了语言标签:C 和 C++。请仅使用似乎是 C++ 的所用语言的标签。
  • This question 似乎与您的重复,似乎表明编译命令行不匹配,您需要将-DCURL_STATICLIB 添加到预处理器标志
  • 感谢大家的反馈,但在大多数情况下,我已经让它工作了,我想我没有链接 licurldll.a 文件。我只链接了 libcurl.a 文件 x.x 如此简单的事情让我留下了多么悲剧。但是,现在我遇到了另一个错误。我错过了一个 libcrypto.dll 和 idk 它在哪里。我的 libcurl 包中没有它...

标签: c++ c dll linker dev-c++


【解决方案1】:

这样可能会更好

-L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -lcurl

-L 参数将目录添加到库搜索路径,-l 参数指定要查找的库。

【讨论】:

  • 我想我没有链接 liburldll.a 文件,这是我唯一需要这样做的想法,但我似乎无法让程序运行。它现在崩溃了我缺少一个 libcrypto.dll 文件,但是 bar 包没有附带它。不知道该怎么办。我该如何继续?
  • 这里有二进制文件(从 OpenSSL 网站链接) - indy.fulgan.com/SSL - libcrypto 应该在其中。只需解压到与 EXE 相同的目录即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2015-04-27
  • 2011-11-08
  • 2013-05-06
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
相关资源
最近更新 更多