Udostępnij za pośrednictwem


/BASE (Adres podstawowy)

Określa adres podstawowy programu.

Składnia

/BASE:{address[,size] | @filename,key}

Uwagi

Uwaga

Ze względów bezpieczeństwa firma Microsoft zaleca użycie /DYNAMICBASE opcji zamiast określania adresów bazowych dla plików wykonywalnych. /DYNAMICBASE Generuje obraz wykonywalny, który może być losowo rebased w czasie ładowania przy użyciu funkcji randomizacji układu przestrzeni adresowej (ASLR) systemu Windows. Opcja /DYNAMICBASE jest domyślnie włączona.

Opcja /BASE konsolidatora ustawia adres podstawowy programu. Zastępuje domyślną lokalizację pliku EXE lub DLL. Domyślny adres podstawowy pliku EXE jest 0x400000 dla obrazów 32-bitowych lub 0x140000000 dla obrazów 64-bitowych. W przypadku biblioteki DLL domyślny adres podstawowy jest 0x10000000 dla obrazów 32-bitowych lub 0x180000000 dla obrazów 64-bitowych. W systemach operacyjnych, które nie obsługują losowania układu przestrzeni adresowej (ASLR) lub gdy /DYNAMICBASE:NO została ustawiona opcja, system operacyjny najpierw próbuje załadować program pod określonym lub domyślnym adresem podstawowym. Jeśli jest dostępna niewystarczająca ilość miejsca, system przenosi program. Aby zapobiec relokacji, użyj /FIXED opcji .

Konsolidator zgłasza błąd, jeśli address nie ma wielokrotności 64K. Opcjonalnie można określić rozmiar programu. Konsolidator wyświetla ostrzeżenie, jeśli program nie może zmieścić się w określonym rozmiarze.

W wierszu polecenia innym sposobem określenia adresu podstawowego jest użycie pliku odpowiedzi adresu podstawowego. Plik odpowiedzi adresu podstawowego to plik tekstowy zawierający adresy podstawowe i opcjonalne rozmiary wszystkich bibliotek DLL używanych przez program oraz unikatowy klucz tekstowy dla każdego adresu podstawowego. Aby określić adres podstawowy przy użyciu pliku odpowiedzi, użyj znaku at (@), a następnie nazwy pliku odpowiedzi, filenamea następnie przecinka, a następnie key wartości adresu podstawowego do użycia w pliku. Konsolidator szuka filename w określonej ścieżce lub jeśli nie określono żadnej ścieżki, w katalogach określonych w zmiennej środowiskowej LIB . Każdy wiersz w obiekcie filename reprezentuje jedną bibliotekę DLL i ma następującą składnię:

keyaddress [size] ; comment

Jest key to ciąg znaków alfanumerycznych i nie uwzględnia wielkości liter. Zazwyczaj jest to nazwa biblioteki DLL, ale nie jest to wymagane. Następuje key po nim podstawa address w języku C, szesnastkowej lub dziesiętnej notacji oraz opcjonalna maksymalna wartość size. Wszystkie trzy argumenty są oddzielone spacjami lub tabulatorami. Konsolidator wystawia ostrzeżenie, jeśli określona size przestrzeń adresowa jest mniejsza niż wirtualna przestrzeń adresowa wymagana przez program. Element A comment jest określony średnikiem (;) i może znajdować się w tym samym lub osobnym wierszu. Konsolidator ignoruje cały tekst ze średnika na końcu wiersza. W tym przykładzie pokazano część takiego pliku:

main   0x00010000    0x08000000    ; for PROJECT.exe
one    0x28000000    0x00100000    ; for DLLONE.DLL
two    0x28100000    0x00300000    ; for DLLTWO.DLL

Jeśli plik zawierający te wiersze jest nazywany DLLS.txt, następujące przykładowe polecenie stosuje następujące informacje:

link dlltwo.obj /dll /base:@dlls.txt,two

Innym sposobem ustawienia adresu podstawowego jest użycie argumentu BASE w instrukcji NAME or LIBRARY . Opcje /BASE i /DLL są równoważne instrukcji LIBRARY .

Aby ustawić tę opcję konsolidatora w środowisku programowania Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).

  2. Wybierz stronę właściwości Zaawansowane konsolidatora> właściwości>konfiguracji.

  3. Zmodyfikuj właściwość Adres podstawowy.

Aby programowo ustawić tę opcję konsolidatora

Zobacz też

Dokumentacja konsolidatora MSVC
Opcje konsolidatora MSVC