我从http://curl.haxx.se/gknw.net/7.34.0/dist-w32/curl-7.34.0-devel-mingw32.zip下载了libcurl curl-7.34.0-devel-mingw32.zip。
我使用Eclipse Kepler和MinGW作为工具链(GCC编译器)。我创建了html.cpp,然后测试了示例http://curl.haxx.se/libcurl/c/simple.html中的代码:
我收录了标题:
#include<iostream>
#include<curl/curl.h>
using namespace std;
有5个cURL功能。其中只有2个(curl_easy_init
,curl_easy_setopt
)被称为“未定义参考”。
编译器消息:
Info: Internal Builder is used for build
g++ -O3 -Wall -c -fmessage-length=0 -o html.o "..\\html.cpp"
g++ -static-libgcc -static-libstdc++ -o HTML.exe html.o
html.o:html.cpp:(.text.startup+0x12): undefined reference to `_imp__curl_easy_init'
html.o:html.cpp:(.text.startup+0x1e): undefined reference to `_imp__curl_easy_setopt'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: html.o: bad reloc address 0x1e in section `.text.startup'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
其他3个函数说没问题:
curl_easy_perform
curl_easy_strerror
curl_easy_cleanup
我尝试设置属性以告知MinGW链接器包含头文件和库文件。与上面相同的情况或编译器只是说找不到.a文件。将-lcurl
或-DCURL_STATICLIB
添加到链接器的标志也是无用的。
我还尝试将libcurl的库(.a文件)和头文件(.h文件)复制到C:\ MinGW和C:\ gcc-4.8.1中的文件夹bin,include和lib。结果证明没有变化。
可悲的是,使用cURL的第一个挑战不是编码而是编译。我怎么解决这个问题? 谢谢你们!