Zacząłem się bawić trochę w prostą aplikację wykorzystującą sqlite. Powody 2:
- chciałem poznać co nieco sqlite;
- muszę sobie wymyślać jakieś zadania jeśli chcę się tego języka jako tako nauczyć :)
No i wczoraj miałem niezłą zagwozdkę. W pliku .cpp stało jak byk:
#include <sqlite3.h>
a ten przy kompilacji gotowca z dokumentacji sqlite wywala błędy, że nie znajduje funkcji sqlite3_open() i innych. Porażka. Spędziłem nad tym ponad godzinę dzień wcześniej, i dopiero wczoraj wieczorem udalo mi sie dojść do tego, że poza dodaniem pliku nagłówkowego w żródłach, trzeba powiedzieć kompilatorowi (w moim przypadku gcc), że ma użyć biblioteki, w której zawarte są potrzebne funkcje. Wywołanie kompilatora wobec tego wyglądało tak:
% g++ t1.cpp -o t1 -lsqlite3
i od tego momentu zaczęło działać jak należy.
Dziś, uzbrojony w nową wiedzę, spróbowałem tego samego na Windowsie w Sądzie więzieniu. Do diabła, znów spędziłem godzinę na tym, żeby sie doszukać jak tam ma to wyglądać. Najpierw buszując w opcjach używanego przeze mnie IDE (co mi się w końcu udało), a później ręcznie, wykorzystując wspomniane wczesniej gcc. Teoretycznie proste, nie ? W domu się udało, też gcc, więc co za problem ? Heheh, w sumie proste, jak sie już wie… najpierw trzeba zapodać mu gdzie szukać pliku nagłówkowego do sqlite (w moim wypadku było to: c:\Programy\Dev-Cpp\include\M), a później, oczywiście innym parametrem niż pod Linuksem (bo jakżeż by to mogłoby być inaczej) wskazać ścieżkę do .dll sqlite3. W sumie całość, wrzucona przeze mnie do .bata, wygląda mniej więcej tak:
g++ note.cpp -o note.exe -Ic:\Programy\Dev-Cpp\include\M -Wl,lsqlite3
albo podobnie, mam to w pracy, więc nie mogę teraz podejrzeć jak to tam wygląda ;) jeśli nakłamałem, to postaram się jutro to uaktualnić.
PS. W gotowcu, którego adres dałem powyżej, jest jeden błąd: brakuje odwołania do pliku nagłówkowego stdlib.h, który zawiera definicję funkcji exit(). Bez tego kompilator, oczywiście słusznie, wywala błędy. Linijka, którą trzeba dodać, wygląda tak:
#include <stdlib.h>
witam, nie moge sobie dac rady z obsluga sqlite, mam buildera i tak jak autor nie moge skompilowac przykladowego programu, nie bardzo wiem jak mam dodac ten plik naglowkowy i adres do dll’a (nie mam sqlite.h w katalogu borland/include), moze ktos podac jakis przyklad kodu prostego programu otwierajacego baze, wyciagajacego jakas dana z tabeli itp ?
Adres bezpośredni: http://urzenia.net/196/c-i-sqlite/#comment-1144
Builder nie posiada pliku sqlite.h, tu znajdziesz wszystkie potrzebne pliki: http://www.sqlite.org/download.html, sciągnij sobie sqlite-source, otwórz nowy projekt Static Library dodaj do projekut pliki które własnie zassałeś, można by juz skompilować ale prawdopodobnie wywali troche błędów,
najszybciej i chyba najprosciej rozwiązać problem można otwierając plik tclsqlite.c i na samej górze dopisując #define NO_TCL, teraz powinno sie udać ;). Jak tego użyc chyba nie trzeba tłumaczyć (#include + sqlite3.lib), przykładów w sieci opór (google + szukaj), co prawda w php najwiecej ale na c++ łatwo się przekłada ;)
Adres bezpośredni: http://urzenia.net/196/c-i-sqlite/#comment-2800
Z opisu problemu, który miałeś wynika, że jesteś baaaardzo początkujący. Przecież to nie kompilator “wywalał” błędy, tylko linker. A taki objaw jest oczywisty, gdy program nie jest łączony z jakąś biblioteką lub modułem.
Jednym słowem - uśmiałem się nieźle :-D
Pozdrowienia
Krzysiek (10 lat doświadczenia w C++)
Adres bezpośredni: http://urzenia.net/196/c-i-sqlite/#comment-10729
@Krzysiek: zgadza się, z c++ mam niewielkie doświadczenie :) Jeszcze nie jestem przyzwyczajony do składni błędów C++, a teraz, po kilku miesiącach nie widzenia prawie na oczy kodu C++, to już w ogóle :) Ale jeszcze do tego języka wrócę, nie pozbędzie się mnie łatwo ;)
Adres bezpośredni: http://urzenia.net/196/c-i-sqlite/#comment-18934
Wybacz stary, ale kodowanie tej strony to jakaś porażka, same krzaki jakby po chińsku czytać..
Zrób coś z tym..
Adres bezpośredni: http://urzenia.net/196/c-i-sqlite/#comment-32773
Uhm, wiem. ale po przenosinach na inny serwer miałem problem z zalogowaniem się do panelu, i dopiero teraz udało mi się pokonać wordpressa… jutro lub najpóźniej w weekend postaram się naprawić kodowanie całości.
Adres bezpośredni: http://urzenia.net/196/c-i-sqlite/#comment-32776