Zacząłem się bawić trochę w prostą aplikację wykorzystującą sqlite. Powody 2:

  1. chciałem poznać co nieco sqlite;
  2. 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>

Liczba komentarzy: 6

  1. 1 Była sobota, 24 czerwiec 2006 roku gdy o godzinie 19:34 przyszedł dawid i stwierdził:

    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 ?

  2. 2 Był wtorek, 01 sierpień 2006 roku gdy o godzinie 17:47 przyszedł Dawid i stwierdził:

    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)

    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 ;)

  3. 3 Był poniedziałek, 30 październik 2006 roku gdy o godzinie 12:13 przyszedł Krzysiek i stwierdził:

    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++)

  4. 4 Był poniedziałek, 20 listopad 2006 roku gdy o godzinie 14:10 przyszedł MySZ i stwierdził:

    @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 ;)

  5. 5 Był wtorek, 22 styczeń 2008 roku gdy o godzinie 16:30 przyszedł Tig3r i stwierdził:

    Wybacz stary, ale kodowanie tej strony to jakaś porażka, same krzaki jakby po chińsku czytać..
    Zrób coś z tym..

  6. 6 Był czwartek, 24 styczeń 2008 roku gdy o godzinie 03:04 przyszedł MySZ i stwierdził:

    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.

A Ty? Co o tym myślisz?

Możesz używać w komentarzach następujących znaczników:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sblam! Antyspam