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