Aracılığıyla paylaş


/BASE (Temel adres)

Bir programın temel adresini belirtir.

Sözdizimi

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

Açıklamalar

Dekont

Microsoft, güvenlik nedeniyle yürütülebilir dosyalarınız için temel adresler belirtmek yerine seçeneğini kullanmanızı /DYNAMICBASE önerir. /DYNAMICBASE , Windows'un adres alanı düzeni rastgele seçme (ASLR) özelliği kullanılarak yük zamanında rastgele yeniden temellenebilen yürütülebilir bir görüntü oluşturur. Seçenek /DYNAMICBASE varsayılan olarak açıktır.

/BASE Bağlayıcı seçeneği, program için bir temel adres ayarlar. Exe veya DLL dosyası için varsayılan konumu geçersiz kılar. EXE dosyasının varsayılan temel adresi 32 bit görüntüler için 0x400000 veya 64 bit görüntüler için 0x140000000. DLL için varsayılan temel adres 32 bit görüntüler için 0x10000000 veya 64 bit görüntüler için 0x180000000. Adres alanı düzeni rastgele seçimini (ASLR) desteklemeyen işletim sistemlerinde veya /DYNAMICBASE:NO seçenek ayarlandığında, işletim sistemi önce belirtilen veya varsayılan temel adresinde bir program yüklemeyi dener. Orada yeterli alan yoksa sistem programı yeniden yerleştirir. Yeniden konumlandırmayı önlemek için seçeneğini kullanın /FIXED .

Bağlayıcı, 64K'nın katı değilse address bir hata döndürür. İsteğe bağlı olarak programın boyutunu belirtebilirsiniz. Program belirttiğiniz boyuta sığamıyorsa bağlayıcı bir uyarı görüntüler.

Komut satırında, temel adresi belirtmenin bir diğer yolu da bir temel adres yanıt dosyası kullanmaktır. Temel adres yanıt dosyası, programınızın kullandığı tüm DLL'lerin temel adreslerini ve isteğe bağlı boyutlarını ve her temel adres için benzersiz bir metin anahtarını içeren bir metin dosyasıdır. Yanıt dosyası kullanarak bir temel adres belirtmek için, at işaretini (@) ve ardından yanıt dosyasının adını, filenameardından virgül ve ardından key dosyada kullanılacak temel adresin değerini kullanın. Bağlayıcı, ortam değişkeninde belirtilen LIB dizinlerde belirtilen yolda veya herhangi bir yol belirtilmemişse ararfilename. içindeki her satır bir DLL'yi filename temsil eder ve aşağıdaki söz dizimine sahiptir:

keyaddress [size] ;comment

key, alfasayısal karakterlerden oluşan bir dizedir ve büyük/küçük harfe duyarlı değildir. Bu genellikle DLL'nin adıdır, ancak bu gerekli değildir. öğesinin key ardından C dilinde, onaltılık veya ondalık gösteriminde bir taban address ve isteğe bağlı en fazla size. Üç bağımsız değişken de boşluk veya sekmelerle ayrılır. Belirtilen size , programın gerektirdiği sanal adres alanından küçükse bağlayıcı bir uyarı oluşturur. , comment noktalı virgülle (;) belirtilir ve aynı veya ayrı bir satırda olabilir. Bağlayıcı noktalı virgülden satırın sonuna kadar olan tüm metni yoksayar. Bu örnekte, böyle bir dosyanın bir bölümü gösterilmektedir:

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

Bu satırları içeren dosya DLLS.txt olarak adlandırılıyorsa, aşağıdaki örnek komut bu bilgileri uygular:

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

Temel adresi ayarlamanın bir diğer yolu da veya LIBRARY deyiminde NAME bağımsız değişkenini BASE kullanmaktır. /BASE ve /DLL seçenekleri birlikte deyimine LIBRARY eşdeğerdir.

Visual Studio geliştirme ortamındaki bu bağlayıcı seçeneğini ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>Bağlayıcısı>Gelişmiş özellik sayfasını seçin.

  3. Temel Adres özelliğini değiştirin.

Bu bağlayıcı seçeneğini program aracılığıyla ayarlamak için

Ayrıca bkz.

MSVC bağlayıcı başvurusu
MSVC bağlayıcı seçenekleri