/BASE(기준 주소)
/BASE:{address[,size] | @filename,key}
/BASE 옵션은 프로그램의 기준 주소를 설정합니다. 이 경우 .exe 파일의 기본 위치(0x400000에서)나 DLL의 기본 위치(0x10000000에서)는 무시됩니다. 운영 체제에서는 지정된 기준 주소나 기본 기준 주소에서 먼저 프로그램을 로드하게 됩니다. 해당 위치에 충분한 공간이 없는 경우에는 프로그램이 재배치됩니다. 프로그램을 재배치하지 않으려면 /FIXED 옵션을 사용합니다.
주소가 64K의 배수가 아니면 링커에서는 오류를 발생시킵니다. 지정된 크기에 프로그램이 맞지 않으면 링커에서 경고가 발생하도록 프로그램의 크기를 지정할 수도 있습니다.
명령줄에서 기준 주소를 지정하는 다른 방법은 @ 기호 다음에 filename과 파일에 대한 key를 사용하는 것입니다. filename은 프로그램에서 사용할 모든 DLL의 위치 및 크기가 포함된 텍스트 파일입니다. 링커는 filename을 지정된 경로에서 찾거나 지정된 경로가 없으면 LIB 환경 변수로 지정된 디렉터리에서 찾습니다. filename의 각 줄은 하나의 DLL을 나타내며 구문은 다음과 같습니다.
key address [size] ;comment
key는 영숫자 문자열이며 대소문자가 구분되지 않습니다. 대개 DLL 이름을 key로 사용하지만 꼭 그런 것은 아닙니다. key 다음에는 C 언어로 된 16진수 또는 10진수의 기준 주소와 최적화된 최대 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
설명
기준 주소를 할당하면 DLL이 주소 공간을 겹쳐 사용하지 않게 되므로 페이지 수를 줄이고 프로그램의 성능을 향상시킬 수 있습니다.
기준 주소를 설정하는 다른 방법은 NAME 또는 LIBRARY 문에 BASE 인수를 사용하는 것입니다. /BASE 및 /DLL 옵션은 모두 LIBRARY 문에 해당합니다.
Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual C++ 프로젝트 속성 설정을 참조하십시오.
링커 폴더를 클릭합니다.
고급 속성 페이지를 클릭합니다.
기준 주소 속성을 수정합니다.
프로그래밍 방식으로 이 링커 옵션을 설정하려면
- BaseAddress를 참조하십시오.