[DLL QT] biblioteka ładowana statycznie?
Ostatnio zmodyfikowano 2018-08-30 21:08
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? |
|
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. |
|
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_libStworzył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. |
|
« 1 » |