cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: [C/C++] Problem to use curl with Visual 2010

From: Alan Wolfe <alan.wolfe_at_gmail.com>
Date: Tue, 11 Oct 2011 08:37:49 -0700

Im glad it works! You probably want to get the release flavors matching and
use that instead of the debug. You should even be able to link to the
release libs from your debug exe i believe.

If you use debug versions of the libraries (and your code), it will run
slower, although maybe not in any way noticeable.

Just FYI, but I'm glad your problem is sorted out!

On Tue, Oct 11, 2011 at 4:12 AM, guillaume opalach <
guillaume_opalach_at_hotmail.com> wrote:

>
>
> ------------------------------
> Date: Mon, 10 Oct 2011 23:30:11 -0700
> Subject: Re: [C/C++] Problem to use curl with Visual 2010
> From: alan.wolfe_at_gmail.com
> To: curl-library_at_cool.haxx.se
>
>
> not sure if it will help, but your program and libcurl need to match for
> some compilation settings.
>
> #1 - you need to use the same CLR (runtime). If you use "multithreaded
> debug dll" in your program, but libcurl is compiled with "multithreaded
> debug" for instance, that will cause problems.
>
> #2 - make sure that your exceptions and rtti settings in your program match
> the settings you built libcurl with (although i think this will may cause
> linker errors if this is wrong)
>
> On Mon, Oct 10, 2011 at 5:12 PM, guillaume opalach <
> guillaume_opalach_at_hotmail.com> wrote:
>
> Hello,
>
> I have a bug when I try to execute this code :
>
> ----------------------------------------------------
> #include <stdio.h>
> #include <curl/curl.h>
>
> int main(void)
> {
> CURL *curl;
> CURLcode res;
>
> curl_global_init(CURL_GLOBAL_ALL);
> curl = curl_easy_init();
> if(curl)
> {
> curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/");
> res = curl_easy_perform(curl); // error is here
>
> /* always cleanup */
> curl_easy_cleanup(curl);
> }
> return 0;
> }
> ----------------------------------------------------
>
> The error message is the following :
>
> ----------------------------------------------------
> *Debug Assertion Failed !
> C:\...\testCurl.exe
> File: f\dd\vctools\crt_bld\self_x86\crt\dbgheap.c
> Line: 1322
>
> Expression: _CrtIsValidHeapPointer(pUserData)*
> ----------------------------------------------------
>
> I'm using Visual C++ 2010 on Windows 7. and I have curl-7.22.0
> I use my "own version" of the curl library, I follow a tutorial found
> somewhere on your website (I can't find the url again ><)
> I've open vc6curl.dsw and I build the LIB-RELEASE and the DLL-RELEASE.
> I copy the libcurl.dll and the libcurl.lib created into my project's
> directory.
> After that, on Visual I've done the following action (my visual is in
> french so I'll try to translate)
> 1 --
> - Right click on the project name
> - Properties
> - Configuration Properties
> - C/C++ (General)
> - Added the path to an include repertory with the curl header file.
> 2 --
> - Right click on the project name
> - Properties
> - Configuration Properties
> - C/C++
> - Preprocessor
> - Add the BUILDING_LIBCURL and HTTP_ONLY define
> (without this define, I can't make the .exe)
> 3 --
> - Right click on the project name
> - Properties
> - Configuration Properties
> - Linker (General)
> - In "repertory for additionnal library", I've add a path to the
> libcurl.lib
> 4 --
> - Right click on the project name
> - Properties
> - Configuration Properties
> - Linker
> - Entry (? maybe this traduction is wrong, it's the second menu, just under
> General)
> - Additionnal dependency -> I add libcurl.lib; ws2_32.lib; wldap32.lib
>
> That's all. I don't know what to do with the libcurl.dll, I've put it in
> the same directory than libcurl.lib.
> I can compile the project without any error, but when I run the executable,
> an error message (Debug insertion failed)
> I tried to compile the project in Release and not Debug, but I get another
> error message.
>
> So, when I execute this code in step by step, the error appear in this line
> :
> -- res = curl_easy_perform(curl);
> I've get in the cURL code to see what where the error happen :
>
> easy.c - function curl_easy_perform(CURL * curl) - Line 537 - return
> Curl_perform(data);
>
> transfer.c - function Curl_perform(struct SessionHandle *data) - Line 2261
> - return Curl_do_perform(data);
>
> transfer.c - function Curl_do_perform(struct SessionHandle *data) - Line
> 2115 - res = connect_host(data, &conn);
>
> transfer.c - static function connect_host(struct SessionHandle *data,
> struct connectdata **conn) - Line 1982 - res =
> Curl_resolver_wait_resolv(*conn, NULL);
>
> asyn-thread.c - function Curl_resolver_wait_resolv(struct connectdata
> *conn, struct Curl_dns_entry **entry) - Line 509 -
> destroy_async_data(&conn->async);
>
> asyn-thread.c - static function destroy_async_data (struct Curl_async
> *async) - Line 327 - free(async->hostname);
>
> I don't get deeper, because it's the function free, it's a system function
> and not a curl function.
> I really don't know why my code is not working but I think that, if the
> problem don't came from my code, there's only 3 option:
> - A problem with the libcurl.lib (wrong compilation?)
> - A problem with my Visual configuration (maybe I forget something?)
> - A bug in the curl code o_O ?
>
> I hope that someone can help me to solve this problem because I've really
> tried everything that I can.
>
> Best regard,
> --
> Guillaume
>
>
>
>
>
>
>
>
>
>
>
>
> -------------------------------------------------------------------
> List admin: http://cool.haxx.se/list/listinfo/curl-library
> Etiquette: http://curl.haxx.se/mail/etiquette.html
>
>
>
> ------------------------------------------------------------------- List
> admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette:
> http://curl.haxx.se/mail/etiquette.html
>
> Hello again,
>
> First of all, I'm puting my text here because in the rules, you said to
> avoid top posting. I'm not an english native so I maybe misunderstand what
> it means and in that case, please excuse me.
>
> So, as you said in the #1, the "runtime library" (in Properties, C/C++,
> code generation) was not the same in the LIB-RELEASE and in my project.
> But, in the LIB-DEBUG, the runtime library was exacly the same that the one
> use in my project.
> I've compile the LIB-DEBUG (which, by the way don't give me a libcurl.lib
> but libcurld.lib ... I've lost half an hour because of this ><), I've rename
> it and IT WORKS !!!
> Thank you very much for your help I'll try to be aware of this error in the
> futur.
>
> Best regards,
> --
> Guillaume
>
> -------------------------------------------------------------------
> List admin: http://cool.haxx.se/list/listinfo/curl-library
> Etiquette: http://curl.haxx.se/mail/etiquette.html
>

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2011-10-11