Pages

Friday, January 25, 2013

C CURL ld: symbol(s) not found

I am trying to write a cli application using libcurl. I am getting this error and I have been unable to find a solution. Would someone please help me out here?

 

wes-imac:RR Ticket Watcher wes_dean$ gcc -o build/Test.app -I/opt/local/include -L/opt/local/lib -lcurl -lidn -lssl -lcrypto -lssl -lcrypto -lz source/*

source/main.c:7: warning: ‘write_callback_func’ used but never defined

Undefined symbols for architecture x86_64:

  "_write_callback_func", referenced from:

      _main in ccBWsrR4.o

ld: symbol(s) not found for architecture x86_64

collect2: ld returned 1 exit status

 

I have tried the -m32 option as well. I get the same error, only for a 32 bit architecture.

 

The tutorial that I am using says to include the curl/types.h header file, but this is the result when I do that.

 

wes-imac:RR Ticket Watcher wes_dean$ gcc -o build/Test.app -I/opt/local/include -L/opt/local/lib -lcurl -lidn -lssl -lcrypto -lssl -lcrypto -lz source/*

source/main.c:6:24: error: curl/types.h: No such file or directory

 

I have installed XCode with the Command Line Tools. I am running OS 10.8.2 and doing all development from the terminal.

 

 

 

 

#include

#include

#include

#include

#include

#include

 

 

size_t static write_callback_func (void *buffer, size_t size, size_t nmemb, void *userp);

 

 

main (argc, argv, envp)

int argc;

char *argv[], *envp[];

{

  CURL *curl;

  CURLcode res;

  char *response;

 

 

  char url[255];

 

 

  if (argc > 1) {

    strcpy(url, argv[1]);

  }

 

 

  curl = curl_easy_init();

  if (curl) {

    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);

    curl_easy_setopt(curl, CURLOPT_URL, url);

    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback_func);

    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);

 

 

    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);

  }

 

 

  printf("%s", response);

 

 

  printf("\n");

 

 

  return 0;

}


View the original article here

0 comments:

Post a Comment