Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Задает базовый адрес программы.
Синтаксис
/BASE:{address[,size] |@filename,key}
Замечания
Примечание.
По соображениям безопасности корпорация Майкрософт рекомендует использовать /DYNAMICBASE этот параметр вместо указания базовых адресов для исполняемых файлов. /DYNAMICBASE создает исполняемый образ, который может быть случайно перебазирован во время загрузки с помощью функции случайной разметки пространства адресов (ASLR) Windows. Параметр /DYNAMICBASE включен по умолчанию.
Параметр /BASE компоновщика задает базовый адрес для программы. Он переопределяет расположение по умолчанию для ФАЙЛА EXE или DLL. Базовый адрес по умолчанию для EXE-файла 0x400000 для 32-разрядных образов или 0x140000000 для 64-разрядных образов. Для библиотеки DLL базовый адрес по умолчанию 0x10000000 для 32-разрядных образов или 0x180000000 для 64-разрядных образов. В операционных системах, которые не поддерживают случайность макета адресного пространства (ASLR) или при /DYNAMICBASE:NO установке параметра, операционная система сначала пытается загрузить программу по указанному или базовому адресу по умолчанию. Если недостаточно места там, система перемещает программу. Чтобы предотвратить перемещение, используйте /FIXED этот параметр.
Компоновщик выдает ошибку, если address не имеет значения 64K. При необходимости можно указать размер программы. Компоновщик выдает предупреждение, если программа не может соответствовать указанному размеру.
В командной строке можно указать базовый адрес с помощью файла ответа базового адреса. Файл ответа на базовый адрес — это текстовый файл, содержащий базовые адреса и необязательные размеры всех библиотек DLL, которые использует программа, и уникальный текстовый ключ для каждого базового адреса. Чтобы указать базовый адрес с помощью файла ответа, используйте знак при входе (@), а затем имя файла ответа, filenameа затем запятую, а затем key значение базового адреса, используемого в файле. Компоновщик ищет filename либо указанный путь, либо если путь не указан, в каталогах, указанных в переменной LIB среды. Каждая строка представляет filename одну библиотеку DLL и имеет следующий синтаксис:
keyaddress[size];comment
Строка key буквенно-цифровых символов и не учитывает регистр. Обычно это имя библиотеки DLL, но это не обязательно. За key ним следует база address в C-языке, шестнадцатеричная или десятичная нотация и необязательное максимальное значение size. Все три аргумента разделены пробелами или вкладками. Компоновщик выдает предупреждение, если указанное size значение меньше виртуального адресного пространства, требуемого программой. Определяется comment точкой с запятой (;) и может находиться в одной или отдельной строке. Компоновщик игнорирует весь текст из запятой до конца строки. В этом примере показана часть такого файла:
main 0x00010000 0x08000000 ; for PROJECT.exe
one 0x28000000 0x00100000 ; for DLLONE.DLL
two 0x28100000 0x00300000 ; for DLLTWO.DLL
Если файл, содержащий эти строки, вызывается DLLS.txt, следующая команда применяет эту информацию:
link dlltwo.obj /dll /base:@dlls.txt,two
Другим способом задать базовый адрес является использование аргумента BASE в инструкции или LIBRARY инструкцииNAME. Параметры /BASE и /DLL параметры вместе эквивалентны инструкции LIBRARY .
Задание данного параметра компоновщика в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Выберите страницу свойств>компоновщика>конфигурации Advanced.
Измените свойство Base Address .
Задание данного параметра компоновщика программным способом
- См. раздел BaseAddress.