EDYCJA: Wiem o załącznikach, ale dołącz do nich pliki o numerze , a nie. Mówię o rzeczywistym skompilowanym i już połączonym kodzie, który zostanie upieczony w bibliotece statycznej.Jak uniknąć tego samego kodu podczas korzystania z bibliotek C++?
Tworzę uniwersalną bibliotekę narzędzi dla siebie w C++.
Jedna z funkcji, które tworzę, printFile
, wymaga string
, cout
i innych podobnych elementów standardowej biblioteki.
Obawiam się, że gdy biblioteka jest kompilowany, a następnie połączony z innym projektem, który również używa string
i cout
, kod string
i cout
zostanie powielona: będzie zarówno być prelinkowane binarne biblioteki program jest są powiązane i będą ponownie połączone z projektem, który sam je wykorzystuje.
Biblioteka jest skonstruowany tak:
- Istnieje jeden plik
libname.hpp
programista, który używa biblioteki ma#include
w swoich projektach. - Dla każdej funkcji
fname
zadeklarowanej wlibname.hpp
znajduje się plikfname.cpp
implementujący ją. - Wszystkie pliki
fname.cpp
również . - Biblioteka sama się kompiluje w
libname.a
, która jest kopiowana do/usr/lib/
.
Czy tak się stanie?
Jeśli tak, czy to w ogóle problem?
Jeśli tak, to w jaki sposób mogę tego uniknąć?
OK, rozumiem. Jednak "jak tego uniknąć" to duża część mojego pytania. – corazza
Zdaję sobie teraz sprawę, że miksowałem dwa różne problemy: duplikację kodu i standardowe układy klas biblioteki. Druga kwestia nie stanowi problemu, jeśli kompilujesz swój program za pomocą tego samego kompilatora, którego użyłeś do kompilacji biblioteki, co wydaje się być twoim przypadkiem. Jeśli chodzi o pierwszy, może to skutkować większym kodem, ale w rzeczywistości nie stanowi problemu. – user1610015