W mojej aplikacji mam 3 główne części:linkami: Statyczne vs Dynamiczny
- Exe: Plik wykonywalny
- Lib_A: biblioteka zawiera klasy Singleton i klasy bazowej dla niektórych obliczeń być stosowanie w Singleton klasa
- Lib_B: biblioteka zawiera szereg klas pochodzących od podstawy w Lib_A
Dlatego, że mam klasy pochodne w Lib_B jest, chciałbym skompilować Lib_B w czasie wykonywania z Exe. Potrzebuję generować klasy pochodne podczas obliczeń bez kończenia całego systemu. To dla mnie zbyt ważne. Oznacza to, że początkowo mogę powiedzieć, że Lib_B1 jest ładowany dynamicznie, również mogę skompilować inne wersje Lib_B jako Lib_B2, Lib_B3, Lib_B4 itd. I ładować je również dynamicznie. Wszystkie biblioteki Lib_Bx będą miały funkcje punktu wejścia do eksportu klas w nich.
Więc biorąc pod uwagę następujące fakty:
- Na starcie pojawi się różne liczby plików dzielących tę samą Lib_A.
- Aplikacja musi działać w systemach Windows i Linux. Tak więc problemem jest częściowa platforma.
- mam zamiar korzystać z niektórych bibliotek jak TBB, Boost, Qt, które mogą mieć swoje własne biblioteki jak tbb.dll itp
Jakie są plusy i minusy statycznie lub dynamicznie łączenie z Lib_A zarówno przed Exe i Lib_Bx's? Jak wpłynąć na wydajność, wielkość systemu itp.? Czy są jakieś niebezpieczne lub trudne sytuacje, które mogę zaszyfrować dla każdego systemu operacyjnego, muszę użyć tego samego kompilatora dla Exe, Lib_A i Lib_Bx.
Projekt całego systemu to dla mnie bardzo trudny problem, więc wszelkie uwagi zostaną docenione.
Dziękuję bardzo.
No cóż, chcę użyć kompilatora MSVC++ w systemie Windows i kompilatorze Intel C++ w systemie Linux. Myślę, że oba generują lepiej zoptymalizowany kod niż GCC. Ta aplikacja służy tylko do mojego użytku. Nie chcę go sprzedawać. –
@sad_man: Czy planujesz uzyskać prawa do redystrybucji VC i ICC? Powodzenia z tym. – ephemient
@ephermient: Na razie nie rozprowadzam mojego wniosku. Ale jeśli sprzedam go w przyszłości, to oczywiście klient dostarczy swoją własną kopię kompilatora. Wiem, że to nie brzmi dobrze, ale to jest sztuczka, aby uzyskać szybkość skompilowanego kodu binarnego. Na razie jestem w porządku z VC i ICC. W najgorszym przypadku mogę rozpowszechniać aplikację z GCC w prawo? :) –