curl-library
R: Re: cannot link libcurl statically
Date: Sat, 8 Sep 2012 23:04:47 +0200 (CEST)
I have tried that,
so now my test programs have this source code:
extern "C" {
#include <curl/curl.h>
#include <curl/easy.h>
}
int main
(int argc, char* argv[])
{
curl_global_init(CURL_GLOBAL_ALL);
}
but
even so, I get the same error messages:
- the one linked to the default-
compiled libcurl compiles but gives the error when launched for missing
dll;
- the one linked to the static-compiled libcurl doesn't compile
and gives the compile-time error for the missing implementations of
some ldap routines:
Z:
\data\users\marco_pappalepore\data\projects\repository1\tests\libcurl\test_libcurl_client_static>g++
test_libcurl_client_static.cpp -
DCURL_STATICLIB -o
test_libcurl_client_static_gpp.exe -I../../../../external/libcurl/curl-
7.27.0-static/include -L../../../../external/
libcurl/curl-7.27.0-
static/lib/.libs -lcurl -L../../../../external/libcurl/curl-7.27.0-
static/lib/.deps -lwsock32
../../../../external/libcurl/curl-7.27.0-
static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x221):
undefined reference to `_i
mp__ldap_err2stringA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x262): undefined reference to `_i
mp__ldap_msgfree'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x28e): undefined
reference to `_i
mp__ldap_unbind_s'
../../../../external/libcurl/curl-
7.27.0-static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.
text+0x636): undefined reference to `_i
mp__ldap_set_optionA'
../../..
/../external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x659): undefined reference to `_i
mp__ldap_sslinitA'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x6b9): undefined
reference to `_i
mp__ldap_simple_bind_sA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x70a): undefined reference to `_i
mp__ldap_search_sA'
../../../../external/libcurl/curl-7.27.0-
static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x727):
undefined reference to `_i
mp__ldap_err2stringA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x7ae): undefined reference to `_i
mp__ldap_err2stringA'
../../../../external/libcurl/curl-7.27.0-
static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x80d):
undefined reference to `_i
mp__ldap_set_optionA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x828): undefined reference to `_i
mp__ldap_initA'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x85c): undefined
reference to `_i
mp__ldap_first_entry'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x896): undefined reference to `_i
mp__ldap_get_dnA'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x92b): undefined
reference to `_i
mp__ldap_first_attributeA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0x952): undefined reference to `_i
mp__ldap_get_values_lenA'
../../../../external/libcurl/curl-7.27.0-
static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xb20):
undefined reference to `_i
mp__ldap_value_free_len'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0xb6d): undefined reference to `_i
mp__ldap_memfreeA'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xb87): undefined
reference to `_i
mp__ldap_next_attributeA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0xb9e): undefined reference to `_i
mp__ldap_memfreeA'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xbb6): undefined
reference to `_i
mp__ber_free'
../../../../external/libcurl/curl-7.27.0-
static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xbc9):
undefined reference to `_i
mp__ldap_next_entry'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0xbee): undefined reference to `_i
mp__ldap_value_free_len'
../../../../external/libcurl/curl-7.27.0-
static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xbfa):
undefined reference to `_i
mp__ldap_memfreeA'
../../../..
/external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la-
ldap.o):ldap.c:(.text+0xc06): undefined reference to `_i
mp__ldap_memfreeA'
../../../../external/libcurl/curl-7.27.0-static/lib/.
libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xc22): undefined
reference to `_i
mp__ber_free'
So the problem persists.
what else can be done ?
Many thanks,
Marco
---- Messaggio originale---- Da: driansharp_at_gmail.com Data: 08/09/2012 2.07 A: "crillion_at_tiscali.it"<crillion_at_tiscali.it>, "libcurl development" <curl-library_at_cool.haxx.se> Ogg: Re: cannot link libcurl statically Hi You need to use Extern "C" {.....} Around all header includes that reference any library that was written in c to properly link against a c++ program Best wishes Ian Sharp PhD On Sep 7, 2012, at 7:33 AM, "crillion_at_tiscali.it" <crillion_at_tiscali.it> wrote: > Hi, > > I'm trying to use libcurl on windows vista (32) with mingw, > linking it statically to C++ programs. The problem I get is that I > cannot link my client program, or when I'm able to link it, it doesn't > work anyway(it requires the dll). I've already read many similar > requests for static linkage problems with curl, and I think have > applied the related suggestions, but the problem persists. > > I have > synthesized my problem in 2 cases, one with curl-7.27.0 compiled in the > default way, and the other with curl-7.27.0 compiled with static > options. In each of the cases I have a .bat script compiling the > program and a simple C++ program using curl. > > What I really need is to > be able to link curl statically, so I ask if you can explain me where > I'm doing wrong and how can actually get my program compiling. > > Here > are my 2 cases: > > ======================================== > > ------------------------------ > case 1: default curl compile > > ------------------------------ > > - get curl-7.27.0. > - extract it into a > folder, such as > (...)\data\projects\external\libcurl\curl- 7.27.0- > default > - open mingw shell > - go the folder > (...) > \data\projects\external\libcurl\curl-7.27.0-default > - give the command > . > /configure > (wait till the command ends) > - give the command > make > (wait > till the command ends) > - create then a c++ program, such this file: > > (...) > \data\projects\repository1\tests\libcurl\test_libcurl_client_default\test_libcurl_client_default. > cpp > > here's the c++ program source code: > > #include <curl/curl. h> > > #include <curl/easy.h> > > int main(int argc, char* argv[]) > { > > curl_global_init(CURL_GLOBAL_ALL); > } > > - create the .bat file to compile > the program: > (...) > \data\projects\repository1\tests\libcurl\test_libcurl_client_default\compile_test_libcurl_client_default_gpp. > bat > > here's the .bat source code: > > g++ test_libcurl_client_default.cpp - > o test_libcurl_client_default_gpp. exe -I../../../.. > /external/libcurl/curl-7.27.0-default/include -L.. /../../.. > /external/libcurl/curl-7.27.0-default/lib/.libs -lcurl -L.. /../../.. > /external/libcurl/curl-7.27.0-default/lib/.deps -lwsock32 > > > - now > close mingw shell and start using normal windows command prompt > - from > the windows command prompt, run the .bat to build the program. the > build process works and I get the output: > > Z: > \data\users\marco_pappalepore\data\projects\repository1\tests\libcurl\test_libcurl_client_default>g++ > test_libcurl_client_default.cpp > -o test_libcurl_client_default_gpp. exe > -I../../../../external/libcurl/curl-7.27.0-default/include -L.. /../../.. > /external/libcurl/curl- > 7.27.0-default/lib/.libs -lcurl - L../../../.. > /external/libcurl/curl-7.27.0-default/lib/.deps - lwsock32 > > - now the > generated program, test_libcurl_client_default_gpp.exe exists and can > be launched via the command > test_libcurl_client_default_gpp > > - this > gives the error: > > "test_libcurl_client_default_gpp.exe - unable to > locate component" > "This application has failed to start because libcurl- > 4. dll was not found. Re-installing the application may fix this > problem." > > - I don't want to use dlls, I need to produce a single file > executable, so anyway this option cannot be done. > > > ======================================== > ------------------------------ > > case 2: static curl compile > ------------------------------ > > - get curl- > 7.27.0. > - extract it into a folder, such as > (...) > \data\projects\external\libcurl\curl-7.27.0-static > - open mingw shell > - > go the folder > (...)\data\projects\external\libcurl\curl-7.27.0- static > - > give the command > ./configure --enable-static --disable- shared --with- > ssl > (wait till the command ends) > - give the command > make LDFLAGS=-all- > static > (wait till the command ends) > - create then a c++ program, such > this file: > (...) > \data\projects\repository1\tests\libcurl\test_libcurl_client_static\test_libcurl_client_static. > cpp > > here's the c++ program source code: > > #include <curl/curl. h> > > #include <curl/easy.h> > > int main(int argc, char* argv[]) > { > > curl_global_init(CURL_GLOBAL_ALL); > } > > - create the .bat file to compile > the program: > (...) > \data\projects\repository1\tests\libcurl\test_libcurl_client_static\compile_test_libcurl_client_static_gpp. > bat > > here's the .bat source code: > > g++ test_libcurl_client_static.cpp - > DCURL_STATICLIB -o test_libcurl_client_static_gpp.exe -I../../../.. > /external/libcurl/curl-7.27.0-static/include -L../../../.. > /external/libcurl/curl-7.27.0-static/lib/.libs -lcurl -L../../../.. > /external/libcurl/curl-7.27.0-static/lib/.deps -lwsock32 > > - now close > mingw shell and start using normal windows command prompt > - from the > windows command prompt, run the .bat to build the program. Now I get > the following output with error messages: > > > > g++ > test_libcurl_client_static.cpp -DCURL_STATICLIB -o > test_libcurl_client_static_gpp.exe -I../../../../external/libcurl/curl- > 7.27.0-static/include -L../../../../external/libcurl/curl-7.27.0- > static/lib/.libs -lcurl -L../../../../external/libcurl/curl-7.27.0- > static/lib/.deps -lwsock32 > > ../../../../external/libcurl/curl- 7.27.0- > static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(. text+0x221): > undefined reference to `_i > mp__ldap_err2stringA' > .. /../../.. > /external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a (libcurl_la- > ldap.o):ldap.c:(.text+0x262): undefined reference to `_i > > mp__ldap_msgfree' > ../../../../external/libcurl/curl-7.27.0- static/lib/. > libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0x28e): undefined > reference to `_i > mp__ldap_unbind_s' > ../../../.. /external/libcurl/curl- > 7.27.0-static/lib/.libs/libcurl.a(libcurl_la- ldap.o):ldap.c:(. > text+0x636): undefined reference to `_i > mp__ldap_set_optionA' > ../../.. > /../external/libcurl/curl-7.27.0- static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0x659): undefined reference to `_i > > mp__ldap_sslinitA' > ../../../.. /external/libcurl/curl-7.27.0-static/lib/. > libs/libcurl.a(libcurl_la- ldap.o):ldap.c:(.text+0x6b9): undefined > reference to `_i > mp__ldap_simple_bind_sA' > ../../../.. > /external/libcurl/curl-7.27.0- static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0x70a): undefined reference to `_i > > mp__ldap_search_sA' > ../../../.. /external/libcurl/curl-7.27.0- > static/lib/.libs/libcurl.a(libcurl_la- ldap.o):ldap.c:(.text+0x727): > undefined reference to `_i > mp__ldap_err2stringA' > ../../../.. > /external/libcurl/curl-7.27.0- static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0x7ae): undefined reference to `_i > > mp__ldap_err2stringA' > ../../../.. /external/libcurl/curl-7.27.0- > static/lib/.libs/libcurl.a(libcurl_la- ldap.o):ldap.c:(.text+0x80d): > undefined reference to `_i > mp__ldap_set_optionA' > ../../../.. > /external/libcurl/curl-7.27.0- static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0x828): undefined reference to `_i > > mp__ldap_initA' > ../../../.. /external/libcurl/curl-7.27.0-static/lib/. > libs/libcurl.a(libcurl_la- ldap.o):ldap.c:(.text+0x85c): undefined > reference to `_i > mp__ldap_first_entry' > ../../../.. > /external/libcurl/curl-7.27.0- static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0x896): undefined reference to `_i > > mp__ldap_get_dnA' > ../../../.. /external/libcurl/curl-7.27.0-static/lib/. > libs/libcurl.a(libcurl_la- ldap.o):ldap.c:(.text+0x92b): undefined > reference to `_i > mp__ldap_first_attributeA' > ../../../.. > /external/libcurl/curl- 7.27.0-static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(. text+0x952): undefined reference to `_i > > mp__ldap_get_values_lenA' > ../../../../external/libcurl/curl-7.27.0- > static/lib/.libs/libcurl.a (libcurl_la-ldap.o):ldap.c:(.text+0xb20): > undefined reference to `_i > mp__ldap_value_free_len' > ../../../.. > /external/libcurl/curl- 7.27.0-static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(. text+0xb6d): undefined reference to `_i > > mp__ldap_memfreeA' > ../.. /../../external/libcurl/curl-7.27.0-static/lib/. > libs/libcurl.a (libcurl_la-ldap.o):ldap.c:(.text+0xb87): undefined > reference to `_i > mp__ldap_next_attributeA' > ../../../.. > /external/libcurl/curl- 7.27.0-static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(. text+0xb9e): undefined reference to `_i > > mp__ldap_memfreeA' > ../.. /../../external/libcurl/curl-7.27.0-static/lib/. > libs/libcurl.a (libcurl_la-ldap.o):ldap.c:(.text+0xbb6): undefined > reference to `_i > mp__ber_free' > ../../../../external/libcurl/curl-7.27.0- > static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xbc9): > undefined reference to `_i > mp__ldap_next_entry' > ../../../.. > /external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0xbee): undefined reference to `_i > > mp__ldap_value_free_len' > ../../../../external/libcurl/curl-7.27.0- > static/lib/.libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xbfa): > undefined reference to `_i > mp__ldap_memfreeA' > ../../../.. > /external/libcurl/curl-7.27.0-static/lib/.libs/libcurl.a(libcurl_la- > ldap.o):ldap.c:(.text+0xc06): undefined reference to `_i > > mp__ldap_memfreeA' > ../../../../external/libcurl/curl-7.27.0- static/lib/. > libs/libcurl.a(libcurl_la-ldap.o):ldap.c:(.text+0xc22): undefined > reference to `_i > mp__ber_free' > collect2: ld returned 1 exit status > > > - > It seems that the compiler is searching some "ldap" library that I > don't think I have on windows vista/mingw. I had already been able to > reduce some of these errors by linking also wsock32 with the option - > lwsock32; > anyway it seems that this ldap library is not present on my > system. > > So: > > what other steps am I supposed to do in order to make > the build process work, and the program run without the need of any dll > ? > > Many thanks, > > Marco > > > > > Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale più di uno spot in TV. Per ogni nuovo abbonato 30 € di premio per te e per lui! Un amico al mese e parli e navighi sempre gratis: http://freelosophy.tiscali.it/ > > ------------------------------------------------------------------- > List admin: http://cool.haxx.se/list/listinfo/curl-library > Etiquette: http://curl.haxx.se/mail/etiquette.html Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale più di uno spot in TV. Per ogni nuovo abbonato 30 € di premio per te e per lui! Un amico al mese e parli e navighi sempre gratis: http://freelosophy.tiscali.it/ ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.htmlReceived on 2012-09-08