2011-09-22 11 views
13

Próbuję tworzyć biblioteki doładowania w systemie Windows 7 z MSVC (VS 2010).Zwiększenie budowania bibliotek - różnica między opcjami środowiska wykonawczego a opcjami łącza

W opcjach wiersza poleceń bjam natknąłem się na opcje: i łącze do łącza. Chciałbym wiedzieć, w jaki sposób są one używane i jaka jest dokładna różnica między nimi.

ja zbudowałem Boost, Regex biblioteki przy użyciu tej linii poleceń

bjam --with-regex = wariantu uwolnienia --build-options = całkowite

Produkowany tych plikach:

1) boost_regex-vc100-MT-1_47.dll (import biblioteka: boost_regex-vc100-MT-1_47.lib)

2) libboost_regex-vc100-MT-1_47.lib

0.123.

3) libboost_regex-vc100-mt-s-1_47.lib

4) libboost_regex-vc100-s-1_47.lib

Jaka jest różnica między plików 2 i 3 .lib? Obie są statycznymi bibliotekami. Przeszedłem przez Doktorzenia Boost, ale nie znalazłem wiele wyjaśnień w tym.

TIA

Odpowiedz

15

runtime-link odnosi się do sposobu Runtime kompilator jest powiązane. Oznacza to, że odpowiada opcji VC Multithreaded vs. Multithreaded DLL. Środowisko wykonawcze oznacza komponenty wymagane do korzystania ze standardowych bibliotek dostępnych w kompilatorze.

Widzieliście pewnie dynamiczne pliki link na jakimś punkcie: MSVCRTXX.DLL (C Runtime) i MSVCPXX.DLL (C++ biblioteki standardowej), MFCXX.DLL (rdzeń klas MFC). Statyczne odpowiedniki to LIBC i LICBP (patrz here dla tabeli bibliotecznej)

Opcja łącza runtime, której używasz podczas budowania Boost, powinna być zgodna z opcją, gdy używasz kodu klienta. W przeciwnym razie wystąpią błędy spowodowane niezgodnym uruchomieniem w czasie połączenia lub po uruchomieniu programu.

Podczas budowania programu do używania środowiska wykonawczego łączy dynamicznych podczas wdrażania aplikacji należy podać numer VC redistributable.

odnosi się do tego, w jaki sposób biblioteka wspomagania, do której zostanie podłączony twój budynek, może być statyczną lub dynamiczną biblioteką linków.

Powiązane problemy