Author Topic: How to Use LibCurl in Code::Blocks  (Read 10727 times)

JosephinM

  • Guest
How to Use LibCurl in Code::Blocks
« on: April 08, 2015, 03:40:52 pm »
Hello guys,

I am totally new to C and Code::Blocks but glad to be here.

I want to add import libcurl in my project on Windows. Here is what I did:

I found this tutorial on net:

http://en.kioskea.net/faq/29303-install-a-library-under-codeblocks-for-mingw

Downloaded this file for the latest version.

http://curl.haxx.se/gknw.net/7.40.0/dist-w32/curl-7.40.0-devel-mingw32.zip

Saved in below folder as:

C:\libs\curl-7.40.0-devel-mingw32

Followed Project > Build Options > Root > Search Directories > Compiler > Add button and chosen below folder as "non-relative path":

C:\libs\curl-7.40.0-devel-mingw32\include

Followed Project > Build Options > Root > Linker Settings > Link Libraries > Add button and chosen below all .a files as "non-relative path":

C:\libs\curl-7.40.0-devel-mingw32\lib\libcrypto.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libcrypto.dll.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurldll.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libidn.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libidn.dll.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\librtmp.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libssh2.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libssh2dll.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libssl.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libssl.dll.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libz.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libz.dll.a;
C:\libs\curl-7.40.0-devel-mingw32\lib\libzdll.a;

Tutorial also recommends to copy .dll files if it is dynamic but because I am not sure my project is dynamic or static, I did not copy anything.

I use below code as example:
Code
#define CURL_STATICLIB
#include <stdio.h>
#include "curl/curl.h"
#include "curl/typecheck-gcc.h"
#include "curl/easy.h"
//#include <string>

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written;
    written = fwrite(ptr, size, nmemb, stream);
    return written;
}

int main(void) {
    CURL *curl;
    FILE *fp;
    char *url = "https://wordpress.org/plugins/about/readme.txt";
    char outfilename[FILENAME_MAX] = "E:\\test.txt";
    curl = curl_easy_init();
    if (curl) {
        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        curl_easy_cleanup(curl);
        fclose(fp);
    }
    return 0;
}

By this configuration and code; when I build and run the project I get:

Code
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(easy.o):(.text+0x16): undefined reference to `WSAStartup@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(easy.o):(.text+0x39): undefined reference to `WSACleanup@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(easy.o):(.text+0x235): undefined reference to `WSACleanup@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x2e): undefined reference to `WSASetLastError@4'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x25f): undefined reference to `select@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x270): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x378): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x398): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x3d0): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x3ed): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x42f): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x445): more undefined references to `__WSAFDIsSet@8' follow
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x7aa): undefined reference to `select@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x7bd): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x926): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x941): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(select.o):(.text+0x963): undefined reference to `__WSAFDIsSet@8'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(asyn-thread.o):(.text+0x185): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(sendf.o):(.text+0x147): undefined reference to `recv@16'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(sendf.o):(.text+0x161): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(sendf.o):(.text+0x86a): undefined reference to `recv@16'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(sendf.o):(.text+0x889): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(sendf.o):(.text+0x90e): undefined reference to `send@16'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(sendf.o):(.text+0x92d): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x74): undefined reference to `getsockopt@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xa9): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x10b): undefined reference to `ntohs@4'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x2b5): undefined reference to `getpeername@12'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x2c5): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x37a): undefined reference to `getsockname@12'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x3d9): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x49c): undefined reference to `getsockopt@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x4e7): undefined reference to `setsockopt@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x5f0): undefined reference to `recv@16'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x643): undefined reference to `closesocket@4'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x744): undefined reference to `socket@12'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x94a): undefined reference to `setsockopt@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x9fd): undefined reference to `WSAIoctl@36'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xa0d): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xc8c): undefined reference to `bind@12'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xcd5): undefined reference to `ntohs@4'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xd42): undefined reference to `htons@4'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xd9d): undefined reference to `setsockopt@20'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xdf8): undefined reference to `getsockname@12'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xe3d): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xebe): undefined reference to `connect@12'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xecd): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xf55): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0xfdb): undefined reference to `WSAGetLastError@0'
C:\libs\curl-7.40.0-devel-mingw32\lib\libcurl.a(connect.o):(.text+0x1367): undefined reference to `WSASetLastError@4'

Any recommendations about what I need to fix this please?

Cheers


Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9694
Re: How to Use LibCurl in Code::Blocks
« Reply #1 on: April 08, 2015, 09:44:28 pm »
Have a look at the "webchangemon" project on sourceforge. Use the project file a reference how to setup the lib an the "curlmanager" class for further reference.
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ