Gå til innhold

C++Builder 2010 og cURL 7.21.2 Problemer.


Gjest Slettet+9871234

Anbefalte innlegg

Gjest Slettet+9871234

Er det noen som har erfaring med det kjente biblioteket libCURL: http://curl.haxx.se/libcurl/ for C (der finnes også en egen løsning for C++, men dette ligger nærmere maskinkode) http://curl.haxx.se/libcurl/c/ ?

 

Jeg prøver på det første eksemplet på den siden, nærmere bestemt: simple.c -- http://curl.haxx.se/libcurl/c/example.html

 

Kompileringen etter å ha lagt inn de rette header filene i min include mappe går greit, men ikke lenkingen, selv om jeg inkluderer stien til cURL lib i min path variable.

 

Jeg har funnet libcurl.dll i en annen pakke samt libcurl.imp og de tre filene curllib.dll, curllib.lib og curlib_static.lib i nok en annen pakke.

 

Har ikke funnet løsningen så langt. Er det noen som har løst dette med andre kompilatorer? Jeg bruker Windows Vista operativ system.

 

Det nærmeste jeg er kommet en forklaring så langt finnes på disse to sidene:

 

http://efreedom.com/Question/1-3257336/Curl-Require-Lib-Dll-Work

 

http://curl.haxx.se/mail/lib-2007-07/0312.html

 

Man kan drukne i informasjon i pakken(e) så det hadde vært fint om noen kjenner løsningen.

 

P.S. Det er ikke noe problem å bruke cURL PHP.

Endret av Slettet+9871234
Lenke til kommentar
Videoannonse
Annonse
Jeg har funnet libcurl.dll i en annen pakke samt libcurl.imp og de tre filene curllib.dll, curllib.lib og curlib_static.lib i nok en annen pakke.

du bør nok kompilere lib fila med borand (om det er mulig, vs er en makefil for det der. hvis ikke må du lage en selv..) og lage lib og dll filene dine selv. (med mindre du har en pakke som bruker samme version av borland som deg selv. Eller har du bare funnet en random lib/dll fil?)

 

så vidt jeg vet vil ikke linkeren for borland ta en lib fil som feks er kompilert med visual studio, eller gcc fungere.

 

Se forøvrig denne guiden om hvordan man kompilerer med visual studio:

http://curl.haxx.se/libcurl/c/visual_studio.pdf

Endret av [kami]
Lenke til kommentar
Gjest Slettet+9871234
' date=' 2. november 2010 - 16:39' timestamp='1288712385' post='16421108']
Jeg har funnet libcurl.dll i en annen pakke samt libcurl.imp og de tre filene curllib.dll, curllib.lib og curlib_static.lib i nok en annen pakke.

Lastet for sikkerhets skyld ned alle disse 4 pakkene: http://curl.haxx.se/dlwiz/

Select Type of Package

Det var der jeg fant de ulike filene nevnt ovenfor, men i ulike pakker og med drøssevis av dokumentasjon.

' date=' 2. november 2010 - 16:39' timestamp='1288712385' post='16421108']

du bør nok kompilere lib fila med borand (om det er mulig, vs er en makefil for det der. hvis ikke må du lage en selv..) og lage lib og dll filene dine selv. (med mindre du har en pakke som bruker samme version av borland som deg selv.

Har tenkt tanken selv. Håper å unngå det.

 

Borland's kompilatorer er for øvrig kjøpt opp av det langt større firmaet Embarcadero.

 

' date=' 2. november 2010 - 16:39' timestamp='1288712385' post='16421108']

så vidt jeg vet vil ikke linkeren for borland ta en lib fil som feks er kompilert med visual studio, eller gcc fungere.

Det stemmer, selv om Embarcaderos C++ compilator kan opptre som Visual C++ så vidt jeg vet. Vet heller ikke om det løser problemet, men det er uaktuelt. Der er åpenbare grunner til at jeg bruker C++Builder. Jeg jobber forresten med C - filer på dette stadiet. cURL brukes jo først og fremst til tallknusing (parsing av filer etc) på et lavt nivå. Trenger da ikke den overheaden som introduseres av C++.

 

' date=' 2. november 2010 - 16:39' timestamp='1288712385' post='16421108']

Se forøvrig denne guiden om hvordan man kompilerer med visual studio:

http://curl.haxx.se/libcurl/c/visual_studio.pdf

Jeg har lest det dokumentet. Jeg håpet at det var en lettere løsning for en så kjent kompilator som C++Builders command line compilator bcc32.

 

Får prøve meg frem med lib og dll filer før jeg eventuelt må kompilere kildekoden selv.

Det hadde vært ønskelig med en enkel oppskrift.

 

Takk for innspill.

Lenke til kommentar

Det er i hvertfall åpenbart fra linkene du postet nå at de *ikke* har lib filer for builder.

 

Du *må* med andre ord kompilere pakken selv, for å få lib/dll'er som funker.

 

Jeg jobber forresten med C - filer på dette stadiet. cURL brukes jo først og fremst til tallknusing (parsing av filer etc) på et lavt nivå. Trenger da ikke den overheaden som introduseres av C++.

 

enhver c++ kompilator kompilerer de fleste c program, da de fleste c program er gyldig c++ kode.

 

uansett, om du skal drive med filparsing, nett greier, anbefaler jeg deg å bruke et script språk (python, php, ...)

Lenke til kommentar
Gjest Slettet+9871234
' date=' 3. november 2010 - 11:50' timestamp='1288781431' post='16425022']

Det er i hvertfall åpenbart fra linkene du postet nå at de *ikke* har lib filer for builder.

Har du lastet ned de 4 zip filene og sjekket om de virker mot C++Builder 2010? Jeg sjekket litt, men langt fra alt. Kan drukne i filer og i PDF dokumenter. De må vel også konfigurerers riktig. .lib filer i libs mapper og .dll filer i /bin mappen hvor bcc32.exe ligger antar jeg. C++Builder 2010 inneholder også en cpp32.exe file for å lage Windows programmer og selvsagt også det langt mer avansert RAD IDE for visuell programmering. Det er egentlig den delen jeg behersker best. Men vil her prøve å lage en super rask C applikasjon som kjøres i Windows schduler på min maskin eller fra en virtuelm maskin på en webserver. Ser at man i dag får rimelige dell maskiner med 3 stk 2 Tb harddisker. Vil i første omgang lage en nativ nisje søkemotor.

Kan jo bruke Google for AdSense search, men ikke aktuelt her.

 

' date=' 3. november 2010 - 11:50' timestamp='1288781431' post='16425022']

Du *må* med andre ord kompilere pakken selv, for å få lib/dll'er som funker.

Kan hende har du rett. Sikkert også det beste å få kontroll på (oversikt over) kildekoden. Tar litt tid det.

 

 

' date=' 3. november 2010 - 11:50' timestamp='1288781431' post='16425022']

Jeg jobber forresten med C - filer på dette stadiet. cURL brukes jo først og fremst til tallknusing (parsing av filer etc) på et lavt nivå. Trenger da ikke den overheaden som introduseres av C++.

 

enhver c++ kompilator kompilerer de fleste c program, da de fleste c program er gyldig c++ kode.

 

uansett, om du skal drive med filparsing, nett greier, anbefaler jeg deg å bruke et script språk (python, php, ...)

Ja vet at stort sett er C++ en supermengde av C. Filparsing på nettet er enkelt med PHP og DOM. Dette er et helt annet prosjekt der hurtighet er viktig. En tommelfingerregel er at et kompilert C program som kjøres fra DOS klartekst går ca 20 ganger raskere enn tilsvarende Python byte kode / PHP tolket kode. Det er ihvertfall det jeg har lest i litteraturen.

 

Hva om man for eksempel vil lage en real tids nisje søkemotor som ikke er avhengig av tredje parts API? Kompilert kode på en virtuell web server (eventulet kombinert med ikke tids kritiske skripter og AJAX teknologi) vil gå mye raskere.

Endret av Slettet+9871234
Lenke til kommentar
Har du lastet ned de 4 zip filene og sjekket om de virker mot C++Builder 2010? ...

Nei. Jeg har ikke builder 2010 selv. Men linken du posta inneholder ikke builder som et alternativ

http://curl.haxx.se/dlwiz/?type=devel&os=Win32

 

Med andre ord må du laste ned kildekoden og kompilere den selv. Sansynligvis finnes det makefiler som gjør dette, slik at du bare trenger å kompilere (og fikse evt småfeil som dukker opp). (om du vil lage et library)

 

Evt sette opp et prosjekt og legge til kildefilene selv.

 

Det er ikke noen bombe at kompilert kode kjører raskere enn scripts, men spørsmålet du bør stille deg er om du virkerlig trenger at et script executer på 5ms istede for 50ms. (spesiellt med tanke på at latencien for å laste ned en web side er den samme for et scriptspråk kompilert kode)

Lenke til kommentar
Gjest Slettet+9871234
' date=' 3. november 2010 - 16:01' timestamp='1288796483' post='16426104']

Det er ikke noen bombe at kompilert kode kjører raskere enn scripts, men spørsmålet du bør stille deg er om du virkerlig trenger at et script executer på 5ms istede for 50ms. (spesiellt med tanke på at latencien for å laste ned en web side er den samme for et scriptspråk kompilert kode)

Der kan være stor forskjell på 5 og 50 ms om man skal laste ned mye.

 

Parsing på harddisk, la oss si en database av dokumenter på 1 PetaByte eller 1000 Tb vil gå mye raskere i C.

 

Kernighan og Ritchies bok "The C programming language" 2. utgave (som du finner på nettet i PDF dokument, men vær obs på at du finner originalen og ikke en avskrift som ofte inneholder feil) er en stor eksempelsamling i strengmanipulering, parsing om du vil. Mange raske og kompakte rutiner der som kan plugges direkte inn i dine programmer. Eksempel:

 

/******************************************************
  KnR 1-24
  --------
  Write a program to check the syntax of a C program
  for matching {} () "" '' [] 

  Author: Rick Dearman
  email: [email protected]

******************************************************/
#include <stdio.h>

#define MAXLINE 1000 /* max input line size */
char line[MAXLINE]; /*current input line*/

int getline(void);  /* taken from the KnR book. */


int
main()
{
 int len=0;
 int t=0;
 int brace=0, bracket=0, parenthesis=0;
 int s_quote=1, d_quote=1;


 while ((len = getline()) > 0 )
   {
     t=0;
     while(t < len)
{
  if( line[t] == '[')
    {
      brace++;
    }
  if( line[t] == ']')
    {
      brace--;
    }
  if( line[t] == '(')
    {
      parenthesis++;
    }
  if( line[t] == ')')
    {
      parenthesis--;
    }
  if( line[t] == '\'')
    {
      s_quote *= -1;
    }
  if( line[t] == '"')
    {
      d_quote *= -1;
    }
  t++;
}
   }
 if(d_quote !=1)
   printf ("Mismatching double quote mark\n");
 if(s_quote !=1)
   printf ("Mismatching single quote mark\n");
 if(parenthesis != 0)
   printf ("Mismatching parenthesis\n");
 if(brace != 0)
   printf ("Mismatching brace mark\n");
 if(bracket != 0)
   printf ("Mismatching bracket mark\n");
 if( bracket==0 && brace==0 && parenthesis==0 && s_quote == 1 && d_quote == 1)
       printf ("Syntax appears to be correct.\n");
 return 0;
}


/* getline: specialized version */
int getline(void)
{
 int c, i;
 extern char line[];

 for ( i=0;i<MAXLINE-1 && ( c=getchar()) != EOF && c != '\n'; ++i)
   line[i] = c;
 if(c == '\n') 
   {
     line[i] = c;
     ++i;
   }
 line[i] = '\0';
 return i;

}

Eksemplet ovenfor er tatt fra denne siden:

 

http://users.powernet.co.uk/eton/kandr2/index.html

 

hvor der er forslag til løsning av de fleste oppgavene i boken.

 

Et aktuelt eksempel. WikiLeaks fikk fatt i 400 000 dokumenter med millioner av sider. De måtte lage sitt eget skreddersydde program for å analysere teksten. Så C kan det ofte være en fordel å beherse uansett. Bortsett fra Assembly, er der lite som kan konkurrere med kompilert C kode på hastighet.

 

Digresjon. En nordmann ved NTNU fant et så stort primtall at det tar ca 600 sider å skrive det ut: http://www.npr.org/templates/story/story.php?storyId=105445455

 

This most recent one — though not the largest — is a whopper at nearly 13 million digits long.

Egentlig et lite tall for en kvasi (har studert sammen med de ekte på Blindern) matematiker som meg :nei::roll:

Lenke til kommentar

jeg skjønner ikke helt hvorfor du paster en tilfeldig algoritme her. Forøvrig er ikke koden du har pasta spesielt optimal:

I eksempelet ditt fra KnR, leser de byte for byte (en fil om du piper den inn i programmet), istede for å lese alt inn i minnet på en gang og gjøre parsing deretter. Da vil du ha alt i en fin blokk i minnet og unngå cache miss, pluss at du slipper seek times på harddisken hver gang du skal lese en ny byte.

 

Nettopp dette er hvorfor jeg heller vil overlate dette til et scriptspråk, eller ferdig biblotek (som feks curl). De som skrev scriptspråkene kan allerede disse optimeringene bedre enn meg og da kan jeg heller fokusere på å løse oppgaven, enn småting somhvordan jeg skal parse eller lese en fil mest effektivt.

 

jeg har aldri påstått at scripta kode kjører raskere enn kompilert.

 

poenget mitt var at det er liten vits å skrive noe som kjører raskere enn 50ms om den ikke kalles minst 20 ganger i sekundet.

 

Målet mitt her var å hjelpe deg å få til å kompilere curl, ved å fortelle deg at du må laste ned kildekoden og kompilere den selv (da de ikke har ferdige bibloteker for builder).

Jeg ville også hinte til at dette er en oppgave som typisk løses bedre av scriptspråk (i form av mindre kode, støtte funksjoner du her leter etter (laste ned side, parse)). Sansynligvis ville du klart å skrive noe som laster ned og parser en nettside vha et scriptspråk, bare på tida du har brukt på å få curl til å kompilere.

 

Uansett, jeg ser at du poengterer at må bruke c/c++ og da får vi heller være konstruktive på de premissene.

 

Sist jeg brukte builder (da det enda het borland - sikkert 5-6 år siden), så hadde de allerede bibloteker for å laste ned sider og parse html/xml som fulgte med. (har du sett i hjelp filen - tror det var der jeg fant det?)

 

Om jeg har virket arrogant eller uklar på tidligere svar så beklager jeg dette.

Endret av [kami]
Lenke til kommentar
Gjest Slettet+9871234
' date=' 3. november 2010 - 17:39' timestamp='1288802377' post='16426595']

jeg skjønner ikke helt hvorfor du paster en tilfeldig algoritme her. Forøvrig er ikke koden du har pasta spesielt optimal:

I eksempelet ditt fra KnR, leser de byte for byte (en fil om du piper den inn i programmet), istede for å lese alt inn i minnet på en gang og gjøre parsing deretter. Da vil du ha alt i en fin blokk i minnet og unngå cache miss, pluss at du slipper seek times på harddisken hver gang du skal lese en ny byte.

Tross alt fint å få ditt syn på det utenomsnakket.

 

' date=' 3. november 2010 - 17:39' timestamp='1288802377' post='16426595']

Nettopp dette er hvorfor jeg heller vil overlate dette til et scriptspråk, eller ferdig biblotek (som feks curl). De som skrev scriptspråkene kan allerede disse optimeringene bedre enn meg og da kan jeg heller fokusere på å løse oppgaven, enn småting somhvordan jeg skal parse eller lese en fil mest effektivt.

Nettopp derfor vil jeg bruke cURL der det er naturlig å bruke det i c programmer. Har brukt PHP curl. Enkelt å effektivt for noen oppgaver.

 

' date=' 3. november 2010 - 17:39' timestamp='1288802377' post='16426595']

Målet mitt her var å hjelpe deg å få til å kompilere curl, ved å fortelle deg at du må laste ned kildekoden og kompilere den selv (da de ikke har ferdige bibloteker for builder).

Jeg ville også hinte til at dette er en oppgave som typisk løses bedre av scriptspråk (i form av mindre kode, støtte funksjoner du her leter etter (laste ned side, parse)). Sansynligvis ville du klart å skrive noe som laster ned og parser en nettside vha et scriptspråk, bare på tida du har brukt på å få curl til å kompilere.

Takker for den hjelpen. Prøver å finne de filene som må brukes i et prosjekt. Håpet det var en raskere metode via ferdig kompilerte .lib .dll filer. Det ante meg at jeg måtte kompilere koden selv.

 

' date=' 3. november 2010 - 17:39' timestamp='1288802377' post='16426595']

Sist jeg brukte builder (da det enda het borland - sikkert 5-6 år siden), så hadde de allerede bibloteker for å laste ned sider og parse html/xml som fulgte med. (har du sett i hjelp filen - tror det var der jeg fant det?)

Nyttig informasjon.

 

' date=' 3. november 2010 - 17:39' timestamp='1288802377' post='16426595']

Om jeg har virket arrogant eller uklar på tidligere svar så beklager jeg dette.

Over hodet ikke.

 

Takk for svært nyttige innspill.

Endret av Slettet+9871234
Lenke til kommentar

Det følger med prosjektfil for Visual Studio 6.0. Denne kan enkelt åpnes i Visual Studio 2010 og kompileres.

 

Hvis du ikke gidder, så har jeg kompilert 32-bit static lib debug versjon for deg her.libcurld.zip

Tror den skal funke. Bare legg til som library (ingen DLL skal være nødvendig) og du har allerede include filene du trenger.

 

edit: presterte å ikke se at du brukte C++ Builder :/

Endret av GeirGrusom
Lenke til kommentar
Gjest Slettet+9871234

edit: presterte å ikke se at du brukte C++ Builder :/

Merket det fra din første setning.

 

Har ingen planer om å skifte til Visual studio, siden jeg har brukt Borland's (nå Embarcadero's) C / C++ kompilatorer siden begynnelsen av 90 årene.

Endret av Slettet+9871234
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...