Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Задает базовый адрес программы.
Синтаксис
/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.