[C] Komunikacja z PHP

0

Mój problem wyglada następująco:
Chciałbym napisac program obsługujący baze MYSQL(dokłądniej dodający do niej wpisy) nie używający zewnetrznej bazy. Chciałbym się oprzeć na wysyłaniu zapytać POST do pliku php, który przejmie resztę zadania. Do tego celu chciałem użyć biblioteki libcurl jednak mam problemy z jej uruchomieniem.

dodane -lcurl

[Linker error] undefined reference to `_imp__curl_easy_init' 
[Linker error] undefined reference to `_imp__curl_easy_cleanup' 
 ld returned 1 exit status 

I jestem w kropce. Byłbym bardzo wdzięczny gdyby ktoś pomógł rozwiązać problem z w/w biblioteczką lub polecil alternatywny sposób rozwiazania problemu

OS: winXp

0

os? okej.. ale jakie srodowisko? jak instalowas curla? to zwykly problem z linkowaniem.. kopales na forum i google? czego juz probowales?

0

a dodales biblioteke do projektu? no bo tak właśnie wygląda jakbyś jej nie dodał

0
havi napisał(a)

dodane -lcurl

I oczywiście:

#include <curl/curl.h>

Środowisko DEV. CURL pobrałem przez wbudowany w deva aktualizator pakietów. W pierwszej chwili pomyślałęm ze jest to wina błędnych plików i z http://curl.haxx.se/ pobrałem:

Win32 2000/XP 7.17.1 libcurl SSL

Skopiowałem ręcznie do katalogów Deva i inestety dalej to samo. Troche szukałem na google i w przeważajacej większosci wypaków jest to błąd z niedodaniem -lcur.

0

Znalazłem rozwiązanie, zamieszczam z myślą ze w przyszłosci ktos z korzysta, gdyż jak widziałem nie tylko ja miałęm taki problem. Skompilowac przy użyciu:

gcc -DCURL_STATICLIB -c -g -Icurl/include simple.c
gcc -o simple.exe simple.o -Lcurl/lib -lcurl -lws2_32 -lwinmm

Na podstawie: http://curl.haxx.se/mail/lib-2007-02/0030.html

0

a ja dalej mam problem ;(
aktualnie wywala ten blad ale probowalem juz chyba wszystkiego..
według tych: http://curl.haxx.se/lxr/source/docs/INSTALL.devcpp instrukcji rowniez nie chce działać
'\dev_testy\BezNazwy2.cpp D:\dev_testy\D curl/curl.h: No such file or directory. '

skorzystałem z Packmana ale widocznie nie działa..
w ktorym miejscu użyć tych komend aby skompilowac curla wlasnorecznie?

gcc -DCURL_STATICLIB -c -g -Icurl/include simple.c
gcc -o simple.exe simple.o -Lcurl/lib -lcurl -lws2_32 -lwinmm

proszę o pomoc

0

dwa pytanka które chyba wystarczą

  1. którą wersję curla ściągnąć z http://curl.haxx.se/download.html żeby działała na 100% pod dev_cpp?
  2. o co chodzi z dopisywaniem tych komend i w którym miejscu należy to zrobić (gcc -.....) ?
    błedy tego samego typu:
    '' undefined reference to `_imp__curl_easy_init' "
0

Dev ma własnego packet-menager, i mozliwość ściągania dodatkowych bibliotek (cURL tez tam jest). Ta wersja bedzie działac na pewno.

Opcje projektu (alt+p) -> "Dodatkowe opcje wiersza poleceń" -> konsolidator (w wersji PL)

0

mam wersje deva 4.9.9.2 i jest chyba najnowsza bo sciagnieta kilka godzin temu ze strony Bloodshed
w package manager nie ma zadnej opcji sciagania pakietow, mozna podawac jedynie sciezki do plikow na dysku :(

0

Kompilator: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Wykonywanie make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

g++.exe main.o -o "Projekt1.exe" -L"C:/Dev-Cpp/lib" gcc -DCURL_STATICLIB -c -g -Icurl/include simple.c gcc -o simple.exe simple.o -Lcurl/lib -lcurl -lws2_32 -lwinmm

g++.exe: gcc: No such file or directory
g++.exe: simple.c: No such file or directory
g++.exe: gcc: No such file or directory

g++.exe: simple.o: No such file or directory
g++.exe: main.o: linker input file unused because linking not done
g++.exe: -lcurl: linker input file unused because linking not done
g++.exe: -lws2_32: linker input file unused because linking not done
g++.exe: -lwinmm: linker input file unused because linking not done

make.exe: *** [Projekt1.exe] Error 1

Wykonanie zakończone

0

Nad Packet Menagerem jest opcja "Sprawdz uaktualnienia i pakiety"

0

masz racje, ściągnęły się i automatycznie zainstalowały na pliki 'libcurl', co nie zmienia faktu ze dalej nie działa..
kiedy nie dodaje do konsolidatora:

gcc -DCURL_STATICLIB -c -g -Icurl/include simple.c
gcc -o simple.exe simple.o -Lcurl/lib -lcurl -lws2_32 -lwinmm

to wywala:

Kompilator: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Wykonywanie make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe main.o -o "Projekt1.exe" -L"C:/Dev-Cpp/lib" -lcurl

main.o(.text+0x139):main.cpp: undefined reference to _imp__curl_easy_init' main.o(.text+0x162):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x17f):main.cpp: undefined reference to _imp__curl_easy_setopt' main.o(.text+0x19c):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x1b9):main.cpp: undefined reference to _imp__curl_easy_setopt' main.o(.text+0x1d6):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x1f3):main.cpp: more undefined references to _imp__curl_easy_setopt' follow main.o(.text+0x239):main.cpp: undefined reference to _imp__curl_easy_perform'
main.o(.text+0x249):main.cpp: undefined reference to `_imp__curl_easy_cleanup'
collect2: ld returned 1 exit status

make.exe: *** [Projekt1.exe] Error 1

Wykonanie zakończone

a kiedy dodaje te 2 polecenia to pojawia się

w narzedzie>opcje kompilatora>dodaj te polecenia do wiersza polecen konsolidatora wpisalem -lcurl tak jak pisaliście :

Kompilator: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Wykonywanie make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe main.o -o "Projekt1.exe" -L"C:/Dev-Cpp/lib" -lcurl gcc -DCURL_STATICLIB -c -g -Icurl/include simple.c gcc -o simple.exe simple.o -Lcurl/lib -lcurl -lws2_32 -lwinmm

g++.exe: gcc: No such file or directory
g++.exe: simple.c: No such file or directory
g++.exe: gcc: No such file or directory

g++.exe: simple.o: No such file or directory
g++.exe: main.o: linker input file unused because linking not done
g++.exe: -lcurl: linker input file unused because linking not done
g++.exe: -lcurl: linker input file unused because linking not done
g++.exe: -lws2_32: linker input file unused because linking not done

g++.exe: -lwinmm: linker input file unused because linking not done

make.exe: *** [Projekt1.exe] Error 1

Wykonanie zakończone

proszę o pomoc, to dla mnie naprawdę ważne bo libcurl znacznie poszerzy możliwości moich aplikacji w c++, a nie chce ograniczać się już tylko do używania go w php ..

0

gcc -DCURL_STATICLIB -c -g -Icurl/include simple.c
gcc -o simple.exe simple.o -Lcurl/lib -lcurl -lws2_32 -lwinmm

to nie są linie dla konsolidatora, lecz "surowe" wywołania kompilatora z linii poleceń.

Tak na czuja, bo ani libcurl nie mam, ani Deva, więc nie wiem, co i gdzie on sobie dopisuje, opieram się na wspomnieniach:
dla kompilatora:

-DCURL_STATICLIB -g

w opcjach dla linkera:
-lcurl -lws2_32 -lwinmm

są jeszcze ustawienia katalogów, (include directory itp)
do "include" dodaj ścieżkę, gdzie skopiowałeś pliki .h
do "libraries"/"linker" (albo jakoś tak...) dodaj ścieżkę, gdzie skopiowałeś pliki lib
jeśli skopiowałeś nagłówki do "c:\dev-Cpp\include" oraz liby do "c:\dev-Cpp\lib", to olewasz.

Jak zmienisz i będą błędy, to rzuć output kompilacji jeszcze raz (tak jak teraz), zobaczymy, gdzie się walnąłem.

0

w \include mam folder o nazwie curl z plikami .h a oraz plik libcurl.a w /lib glownego katalogu deva

Kompilator: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Wykonywanie make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe main.o -o "Projekt1.exe" -L"C:/Dev-Cpp/lib" -lcurl -lws2_32 -lwinmm -DCURL_STATICLIB -g

main.o(.text+0x139):main.cpp: undefined reference to _imp__curl_easy_init' main.o(.text+0x162):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x17f):main.cpp: undefined reference to _imp__curl_easy_setopt' main.o(.text+0x19c):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x1b9):main.cpp: undefined reference to _imp__curl_easy_setopt' main.o(.text+0x1d6):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x1f3):main.cpp: more undefined references to _imp__curl_easy_setopt' follow main.o(.text+0x239):main.cpp: undefined reference to _imp__curl_easy_perform'
main.o(.text+0x249):main.cpp: undefined reference to `_imp__curl_easy_cleanup'
collect2: ld returned 1 exit status

make.exe: *** [Projekt1.exe] Error 1

Wykonanie zakończone

do polecen konsolidatora dodalem:
-lcurl -lws2_32 -lwinmm

a w opcjach projektu w parametry>Konsolidator wkleiłem mu:
-DCURL_STATICLIB -g

przepraszam z góry za tyle kłopotu ale jak już wspomniałem naprawdę mi na tym zależy a nie mogę sobie poradzić już bardzo długo z tym problemem :/

0

chyba się zabiorę i ściągnę to Dev C++ i libcurla bo mi się tak po omacku, nawet bez czytania manuala nie chce ;]

DCURL_STATICLIB wywal?

0

wywaliłem i dalej to samo:

Kompilator: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Wykonywanie make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe main.o -o "Projekt1.exe" -L"C:/Dev-Cpp/lib" -lcurl -lws2_32 -lwinmm

main.o(.text+0x139):main.cpp: undefined reference to _imp__curl_easy_init' main.o(.text+0x162):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x17f):main.cpp: undefined reference to _imp__curl_easy_setopt' main.o(.text+0x19c):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x1b9):main.cpp: undefined reference to _imp__curl_easy_setopt' main.o(.text+0x1d6):main.cpp: undefined reference to _imp__curl_easy_setopt'
main.o(.text+0x1f3):main.cpp: more undefined references to _imp__curl_easy_setopt' follow main.o(.text+0x239):main.cpp: undefined reference to _imp__curl_easy_perform'
main.o(.text+0x249):main.cpp: undefined reference to `_imp__curl_easy_cleanup'
collect2: ld returned 1 exit status

make.exe: *** [Projekt1.exe] Error 1

Wykonanie zakończone

pomooocy :/

0

W devie:
kompilator: -DCURL_STATICLIB -lwininet
konsolidator: -lcurl -lwinmm -lssl -lcrypto -lz -lgdi32 -lws2_32

0

http://banat.pl/screeny_dev/costam.JPG
http://banat.pl/screeny_dev/costam2.JPG

moglby ktos lopatologicznie napisac co gdzie wkleic? probowalem wszystkei kombinacje i dalej nie dziala.. moze spoza programu cos jeszcze trzeba skompilowac inaczej etc..? z góry dziękuje za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1