instalacja libgadu (Widnows)

0

Witam!

Zacząłem próbować swoich sił w programowaniu C++ pod Windowsem. Czytam kursy Winapi, już rozumiem zasady działania programów pod Windowsem ;) Chciałbym stworzyć prosty komunikator łączący się z siecią GG. Znalazłem bibliotekę libgadu, dzięki której nie muszę się martwić o obługę protokołu tej sieci.

Tylko .. pewnie jest to lamerskie pytanie .. Nie umiem zainstalować tej blilioteki ;/ Tak wiem wiem jest ona stworzona pod Linuxa i wszysko co o niej szukałem to pod Linuxa ;/ Ale tutaj znalazłem wersje skomplilowaną pod windowsa:
http://www.konnekt.info/sdk/2123/2353.html

Tylko teraz jak ją zainstalować ? ;/ Mógłby mi ktoś to wyjaśnić dokładnie?
W tej chwili uzywam DevC++.

Mam duża motywację na stworzenie komunikatora - nawet bardzo prostego(potem mogłbym to jakoś rozwijać), moglby ktos poswiecic chwile i napisac mi jak to zainstalowac ?? ;) będe wdzieczny

0

Zewnętrzna biblioteka najczęściej składa się z trzech głównych rzeczy:

-mogą być pliki DLL tej biblioteki, w tego rodzaju plikach jest faktyczna skompilowana, binarna zawartość kodu tego co jest w bibliotece, innymi słowy to już skompilowana wersja biblioteki... Pliki takie(kilka bądź zwykle jeden główny), muszą się znajdować w folderze z exekiem, który z nich korzysta, lub w jakimkolwiek folderze systemowym lub folderze, który jest podany w zmiennej środowiskowej Windows, ogólnie w miejscach w których szuka funkcja LoadLibrary(), najczęściej jednak do folderu z exekiem wrzuca się potrzebne DLLki...

-pliki bibliotek statycznych, są to pliki dzięki, którym można statycznie(wygodniej niż dynamicznie) połączyć biblioteki DLL z pisanym programem Exe'ckiem... Linkery różnego pochodzenia używają różnych formatów bibliotek, np. biblioteki dzięki którym można połączyć statycznie pliki DLL z programem pisanym w MS Visual C++ mają format *.lib, a pliki, których używa linker GNU(Dev C++) mają rozszerzenie *.a i zaczynają się na lib...

-pliki nagłówkowe *.h te pliki powinny być ci znane, w nich są deklaracje kodowe tego co powinno znajdować się w bibliotece statycznej, należy je dołączać dyrektywą #include, żeby kompilator wiedział co jest w bibliotece...

DEV C++
Dołączanie bibliotek statycznych odbywa się w opcjach projektu: http://www.winapi.rox.pl Lekcja o kontrolkach WinAPI, tam będzie wyjaśnione jak dołączyć bibliotekę statyczną kontrolek, zasada ta sama, z tym że inna nazwa będzie, wzór jest taki:
nazwa pliku biblioteki statycznej: libNazwa.a
komenda linkera w opcjach: -Nazwa
Aha żeby Dev C++ widział bibliotekę statyczną musisz umieścić ją w folderze "lib" programu Dev C++, lub w opcjach projektu dodać ścieżkę w której znajduje się biblioteka, tam gdzie definiuje się miejsca gdzie Dev C++ ma szukać bibliotek statycznych....

MOŻLIWE PROBLEMY:
-wszystko się skomplilowało, ale podczas uruchamiania programu wyskakuje komunikat tego typu "Nie można odnaleść biblioteki DLL blblbla", wiadomo co :> biblioteki DLL nie ma tam gdzie być powinna...
-Błąd podczas kompilacja i raczej po kompilacji w trakcie linkowania: "undefined referance blablabla" nie dodałeś lub źle dodałeś bibliotekę statyczną, w skutek czego w w pliku nagłówkowym są zdefiniowane pewne elementy, ale biblioteka statyczna w której znajdują się te elementy nie jest dodana i linker się buntuje że nie można odnaleźć tego elementu(referencji)...
-Masa błędów podczas kompilacji, brakuje jakiś plików nagłówkowych...

Dobrze jak do bilbioteki jest dołączana jakaś dokumentacja, bo bez tego ciężko....

0

Ale tutaj znalazłem wersje skomplilowaną pod windowsa:

Nie, to jest wersja do skompilowania ;)

0

A jak skompilować tą bibliotekę - tak żebym miał plik .dll i mógł go dołączać do programu?

I czy mógłbym ściągnąć sobie z tej strony: http://toxygen.net/libgadu/ najnowszą wersje i skompilować ją pod Linuxem na plik dll tak żebym mógł pisać program i uzywać tego pliku pod systemem Windows?

0
marekc120 napisał(a)

I czy mógłbym ściągnąć sobie z tej strony: http://toxygen.net/libgadu/ najnowszą wersje i skompilować ją pod Linuxem na plik dll tak żebym mógł pisać program i uzywać tego pliku pod systemem Windows?

Nie. Już pomijając fakt, że w GNU/Linuksie nie ma czegoś takiego jak pliki dll, jak wyobrażasz sobie uruchamianie kodu skompilowanego dla innego systemu?

0

no dobra masz racje , mogłem sam na to wpaść xD

więc jak to skompilować pod Windowsem??

0

W tlenie jest libgadu.dll. Jedyne co będziesz musiał, to wygenerować bibliotekę eksportów do niej (i tak byś musiał, bo ta co jest ze źródłami jest dla VC).

0

tak , rzeczywiscie jest w tlenie ta biblioteka .dll...... tylko w ogole nie mam pojecia jak zrobić ta bibliotekę eksportów ;/ ??

to jest chyba cos zwiazane z tym: Biblioteki DLL

0

tylko w ogole nie mam pojecia jak zrobić ta bibliotekę eksportów

dlltool

@down
Przeciez wlasnie to jest dlltool :|

0

Już bardziej z tym -> The DLL Import Library Tool

@up: Wiem, zanim zacząłem pisać swojego posta twojego jeszcze nie było.

<font size="1">PS. wcześniej pomyliłem się, powinno być "bibliotekę importów", a nie eksportów.</span>

0

Do folderze z projektem wrzuciłem pliki:

libgadu.dll - z folderu Tlena
dlltool.exe -plik znalazłem w folderze 'bin' programu DevC++

odpaliłem wiersz polecen na XPku, gdy byłem juz w folderze z plikami podałem komende:

dlltool --dllname libgadu.dll --def libgadu.def --output-lib libgadu.a

odpowiedź:
dlltool: can't open def file: libgadu.def

0

Zanim użyjesz tego programu musisz spreparować/wygenerować plik DEF dla tej biblioteki.

Możesz spróbować użyć impdef.exe (Borland). U mnie wygenerował to -> libgadu.def

0

użyłem pliku od Ciebie, ale , zmieniłem jego nazwę na libgadu.def i wrzuciłem do folderu z resztą plików. Użyłem takiej komendy jak wcześniej (poprzedni mój post), I jest taki błąd:
dlltool: instalation problem, cannot exec 'as'

Błąd kompletnie nic mi nie mówi , szukając w google też nic nie znalazłem ;/

0

Brakuje pliku as.exe.

0

na początku:

#include <windows.h>
#include <libgadu.h>

W głównej funkcji winmain:

struct gg_session *sesja;
struct gg_login_params parametry;
struct gg_event *zdarzenie;

memset(&parametry, 0, sizeof(parametry));
parametry.uin = 12345;
parametry.password = "hasło";
parametry.async = 1;
parametry.status = GG_STATUS_INVISIBLE;

sesja = gg_login(&parametry);

w opcje projektu: prarametry: konsolidator:

-lcomctl32
-gadu

po kompilacji błąd:
[Linker error] undefined reference to_imp__gg_login' `

#include <libgadu.h> - to musi być w porządku bo jak wpisze np. libdgjdfhdfj.h to pokazuje się więcej błędów, więc skoro teraz nie ma tych błędów to plik libgadu.h musi być odnaleziony.
-gadu - to też bo tak samo wpisałem tam cos innego lub zostawiłem puste to było jeszcze więcej błędów, których nie ma gdy wpisze -gadu.

Więc co?

0

Przepraszam, że odświeżam stary temat, ale mam podobny problem.
Czy udało Ci się rozwiązać wtedy ten problem?

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