다음을 통해 공유


/ORDER(함수에 순서 지정)

COMDAT(별도 패키지) 함수에 대한 링크 순서를 지정합니다.

구문

/ORDER:@filename

매개 변수

filename
COMDAT 함수의 링크 순서를 지정하는 텍스트 파일입니다.

설명

/ORDER 컴파일러 옵션을 사용하면 함수를 호출하는 함수와 함께 그룹화하여 프로그램의 페이징 동작을 최적화할 수 있습니다. 자주 호출되는 함수를 함께 그룹화할 수도 있습니다. 스왑 튜닝 또는 페이징 최적화라고 하는 이러한 기술은 호출된 함수가 필요할 때 메모리에 있을 확률을 높이고 디스크에서 페이징할 필요가 없습니다.

소스 코드를 개체 파일로 컴파일하는 경우 /Gy(함수 수준 연결 사용) 컴파일러 옵션을 사용하여 각 함수를 COMDAT라는 자체 섹션에 넣도록 컴파일러에 지시할 수 있습니다. /ORDER 링커 옵션은 지정한 순서대로 COMDAT를 실행 이미지에 배치하도록 링커에 지시합니다.

COMDAT 순서를 지정하려면 각 COMDAT를 링커에 배치하려는 순서대로 각 COMDAT를 이름으로 나열하는 텍스트 파일인 응답 파일을 만듭니다. 이 파일의 이름을 /ORDER 옵션의 파일 이름 매개 변수로 전달합니다. C++ 함수의 경우 COMDAT의 이름은 함수 이름의 데코레이팅된 형식입니다. C 함수 및 로 선언된 extern "C"C++ 함수main에 대해 레이블이 지정되지 않은 이름을 사용합니다. 함수 이름과 데코레이팅된 이름은 대/소문자를 구분합니다. 데코레이팅된 이름에 대한 자세한 내용은 데코레이팅된 이름을 참조 하세요.

COMDAT의 데코레이팅된 이름을 찾으려면 개체 파일에서 DUMPBIN 도구의 /SYMBOLS 옵션을 사용합니다. 링커는 이름이 물음표(?) 또는 기호@()로 시작되지 않는 한 응답 파일의 함수 이름 앞에 밑줄(_)을 자동으로 추가합니다. 예를 들어 소스 파일 example.cpp 함수를 int cpp_func(int)extern "C" int c_func(int) int main(void)포함하고 명령 DUMPBIN /SYMBOLS example.obj 이 데코레이팅된 이름을 나열하는 경우

...
088 00000000 SECT1A notype ()    External     | ?cpp_func@@YAHH@Z (int __cdecl cpp_func(int))
089 00000000 SECT22 notype ()    External     | _c_func
08A 00000000 SECT24 notype ()    External     | _main
...

이 경우 응답 파일에서 이름을 < a0/c_func>main?cpp_func@@YAHH@Z지정합니다.

링커 옵션에 /ORDER 옵션이 두 개 이상 나타나면 마지막으로 지정된 옵션이 적용됩니다.

/ORDER 옵션은 증분 연결을 사용하지 않도록 설정합니다. 증분 연결을 사용하는 경우 또는 /ZI(증분 PDB) 컴파일러 옵션을 지정한 경우 이 옵션을 지정하면 링커 경고 LNK4075 표시될 수 있습니다. 이 경고를 비워 두려면 /INCREMENTAL:NO 링커 옵션을 사용하여 증분 연결을 해제하고 /Zi(PDB 생성) 컴파일러 옵션을 사용하여 증분 연결 없이 PDB를 생성할 수 있습니다.

참고 항목

정적 함수 이름은 공용 기호 이름이 아니므로 LINK에서 정적 함수를 정렬할 수 없습니다. /ORDER를 지정하면 순서 응답 파일에서 정적이거나 찾을 수 없는 각 기호에 대해 링커 경고 LNK4037 생성됩니다.

Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>링커>최적화 속성 페이지를 선택합니다.

  3. 응답 파일의 이름을 포함하도록 함수 순서 속성을 수정합니다.

프로그래밍 방식으로 이 링커 옵션을 설정하려면

참고 항목

MSVC 링커 참조
MSVC 링커 옵션