I have tried googling, and found no solution to my problem. I’m trying to learn how to use libcurl, a c networking library. I tried compiling a program that was automatically generated from curl, and a few examples i found online but nothing happened. I got no errors or logs, the program stopped “sucessfully” but i get no output. I also cant write to the console either while the library is included.

Any help is appreciated.

  • Irelephant@lemm.eeOP
    link
    fedilink
    arrow-up
    1
    ·
    2 days ago

    You’re right, but it doesn’t do anything, no matter what the code is, so I assumed that I needn’t include it. Kinda stupid of me. In any case, here it is:

    /********* Sample code generated by the curl command line tool **********
     * All curl_easy_setopt() options are documented at:
     * https://curl.se/libcurl/c/curl_easy_setopt.html
     ************************************************************************/
    #include <curl/curl.h>
    
    int main(int argc, char *argv[])
    {
      CURLcode ret;
      CURL *hnd;
    
      hnd = curl_easy_init();
      curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
      curl_easy_setopt(hnd, CURLOPT_URL, "https://pastebin.com/api/api_post.php");
      curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L);
      curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "api_dev_key=MY_API_KEY&api_paste_code=test&api_option=paste");
      curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)81);
      curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/8.9.1");
      curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
      curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
      curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
      curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
    
      /* Here is a list of options the curl code used that cannot get generated
         as source easily. You may choose to either not use them or implement
         them yourself.
    
      CURLOPT_WRITEDATA was set to an object pointer
      CURLOPT_WRITEFUNCTION was set to a function pointer
      CURLOPT_READDATA was set to an object pointer
      CURLOPT_READFUNCTION was set to a function pointer
      CURLOPT_SEEKDATA was set to an object pointer
      CURLOPT_SEEKFUNCTION was set to a function pointer
      CURLOPT_ERRORBUFFER was set to an object pointer
      CURLOPT_STDERR was set to an object pointer
      CURLOPT_HEADERFUNCTION was set to a function pointer
      CURLOPT_HEADERDATA was set to an object pointer
    
      */
    
      ret = curl_easy_perform(hnd);
    
      curl_easy_cleanup(hnd);
      hnd = NULL;
    
      return (int)ret;
    }
    /**** End of sample code ****/
    

    Another piece of code i tried was:

    #include <stdio.h>
    #include <curl/curl.h>
    
    int main(void) {
        CURL *curl;
        CURLcode res;
    
    
        curl_global_init(CURL_GLOBAL_DEFAULT);
        curl = curl_easy_init();
    
        if(curl) {
           
            curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:5000/a");
    
         
            const char *data = "hello!";
            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
    
    
            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;
    }
    

    compiled it with gcc test.c -o test.exe -IC:\Users\MY_USERNAME\scoop\apps\curl\current\include -LC:\Users\MY_USERNAME\scoop\apps\curl\current\lib -lcurl but you can replace the paths with wherever the libcurl include directory is (i hope).