2012-10-30 13 views
6

Mam projekt, który łączy się zarówno z OpenCV i cvBlob, ale cvBlob również linki do OpenCV. Zarówno OpenCV, jak i cvBlob są zbudowane jako biblioteki statyczne.Czy dwukrotne połączenie biblioteki statycznej powoduje duplikację?

Czy mój plik wykonywalny ma 2 kopie wszystkich funkcji OpenCV, które są używane zarówno przez mój kod i przez cvBlob, czy też linker wykrywa to i usuwa nadmiarowość?

cvBlob i mój link do tego samego pliku biblioteki OpenCV.

+1

Jest to bardzo często spotykana sytuacja - * każdy * łączy się z CRT na przykład. Łącznik obsługuje go bez potu. –

+0

Co jednak dzieje się w przypadku, gdy istnieją dwie różne wersje tej samej biblioteki? Czy to nie jest deterministyczne, co faktycznie zostanie wykorzystane? –

+2

Jeśli masz * inne pliki * .lib, które implementują te same funkcje, otrzymasz "duplikat symbolu" błędy/ostrzeżenia w czasie łącza. – cbranch

Odpowiedz

4

Jeśli oba łącza zawierają te same pliki .lib, w ostatecznym pliku wykonywalnym znajduje się tylko jedna kopia.

Powiązane problemy