Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[DLL QT] biblioteka ładowana statycznie?

Ostatnio zmodyfikowano 2018-08-30 21:08
Autor Wiadomość
Blef
Temat założony przez niniejszego użytkownika
[DLL QT] biblioteka ładowana statycznie?
» 2018-08-30 12:32:39
Cześć, otóż dotąd używałem WinApi i VS do pisania swojego 'programu'. Jednak WinApi nie jest dość wygodne albo po prostu brak mi doświadczenia. Próbowałem przerzucić się na C++ Builder, ale istniały pewne problemy i finalnie chcę przenieść gui i program na Qt, a jednak mam problem, program chce pisać jako biblioteke .dll dołączany do innych zew. programów i tutaj pojawia się pierwszy problem. Zainteresowałem się statycznym budowaniem w Qt, otóż niestety o ile .exe kompiluje się bez żadnych problemów i pomimo dużego rozmiaru działa, to plik o rozszerzeniu .dll nie pojawia się wcale, jedynie pliki o rozszerzeniu .o .a .cpp, stąd moje pytanie czy jest możliwe zbudowanie statycznej dll, która ma inne dll potrzebne do działania w sobie?
P-172244
pekfos
» 2018-08-30 14:50:15
Jest możliwe. Biblioteka DLL może linkować biblioteki statyczne. W przypadku Qt masz do rozważenia jeszcze licencję. Jeśli będziesz linkować statycznie Qt, to twoja aplikacja, jeśli jest rozpowszechniana, musi być na licencji GPL.
P-172245
mateczek
» 2018-08-30 21:08:38
to plik o rozszerzeniu .dll nie pojawia się wcale, jedynie pliki o rozszerzeniu .o .a .cpp
dll to biblioteka do linkowania dynamicznego. Skoro pojawia ci się plik "*.a" To właśnie stworzyłeś bibliotekę do linkowania statycznego.

Jeśli chcesz dll to w projekcie wybierasz w type "shared library" wtedy stworzy Ci dll (czyli bibliotekę do linkowania dynamicznego)
Oczywiście biblioteka do linkowania dynamicznego "dll (Dynamic-Link Library)" może linkować inne biblioteki statycznie



"biblioteka.a" to jest właśnie twoja biblioteka, którą możesz statycznie z linkować ze swoim programem. Zbudowany w ten sposób program nie będzie potrzebował dodatkowego pliku "biblioteka.dll"
W przypadku mojego małego projekciku jak w linku https://github.com/mateczek​/qtPLC_lib

Stworzyłem sobie bibliotekę do linkowania statycznego (sterowniki siemensa PLC_s7 komunikacja). I gdy piszę program z wykorzystaniem tej biblioteki to sama biblioteka linkuje się statycznie. Ale dll-ki Qt i tak muszę dodać do skompilowanego exe aby działało.


Wydaje mi się (choć mogę się w tym momencie bardzo ale to bardzo mylić), że mało kto linkuje statycznie QT nawet z programami, a z biblioteką może to być jeszcze bardziej kłopotliwe (Czy to czasem nie będzie wyglądało tak, że wbudujesz QT na sztywno i program i w bibliotekę dwa razy??

Zresztą statyczne linkowanie programów z biblioteką Qt wymaga udostępnienia kodu źródłowego na GPL.
P-172250
« 1 »
  Strona 1 z 1