링크

C++ 프로젝트에서 컴파일러가 소스 코드를 개체 파일(*.obj)로 컴파일한 후 연결 단계가 수행됩니다. 링커(link.exe)는 개체 파일을 단일 실행 파일로 결합합니다.

링커 옵션은 Visual Studio 내부 또는 외부에서 설정할 수 있습니다. Visual Studio 내에서 솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택하여 속성 페이지를 표시하여 링커 옵션에 액세스합니다. 왼쪽 창에서 링커를 선택하여 노드를 확장하고 모든 옵션을 확인합니다.

링커 명령줄 구문

Visual Studio 외부에서 링커를 실행하는 경우 하나 이상의 방법으로 입력을 지정할 수 있습니다.

  • 명령줄에서 설정
  • 명령 파일 사용
  • 환경 변수에서

링커는 먼저 환경 변수에 LINK 지정된 옵션과 명령줄 및 명령 파일에 지정된 순서대로 옵션을 처리합니다. 다른 인수를 사용하여 옵션을 반복하는 경우 마지막으로 처리된 옵션이 우선합니다.

옵션은 전체 빌드에 적용되며, 특정 입력 파일에는 옵션을 적용할 수 없습니다.

실행 link.exe하려면 다음 명령 구문을 사용합니다.

link arguments

arguments 포함 옵션 및 파일 이름이며 어떤 순서로든 지정할 수 있습니다. 옵션은 먼저 처리된 다음, 파일로 처리됩니다. 하나 이상의 공백 또는 탭을 사용하여 인수를 구분합니다.

참고 항목

Visual Studio 명령 프롬프트에서만 이 도구를 시작할 수 있습니다. 시스템 명령 프롬프트 또는 파일 탐색기에서는 시작할 수 없습니다.

명령줄

명령줄에서 옵션은 옵션 지정자( 대시() 또는 슬래시(-/)와 옵션의 이름으로 구성됩니다. 옵션 이름은 축약할 수 없습니다. 일부 옵션은 콜론(:) 다음에 지정된 인수를 사용합니다. 옵션의 따옴표 붙은 문자열을 제외하고 옵션 사양 내에서 공백이나 탭이 /COMMENT 허용되지 않습니다. 소수 또는 C 언어 표기법으로 숫자 인수를 지정합니다. 옵션 이름 및 해당 키워드(keyword) 또는 파일 이름 인수는 대/소문자를 구분하지 않지만 인수로 식별자는 대/소문자를 구분합니다.

링커에 파일을 전달하려면 명령 다음 명령줄에서 파일 이름을 지정합니다 link.exe . 파일 이름을 사용하여 절대 또는 상대 경로를 지정할 수 있으며 파일 이름에 와일드 카드 사용할 수 있습니다. 점(.) 및 파일 이름 확장명은 생략하면 링커는 파일을 찾을 확장 .obj 명이라고 가정합니다. 링커는 파일 이름 확장명 또는 파일 내용에 대한 가정이 부족하여 사용하지 않습니다. 이를 검사하여 파일 형식을 결정하고 그에 따라 처리합니다.

링커는 성공에 대해 0을 반환합니다(오류 없음). 그렇지 않으면 링크를 중지한 오류 번호를 반환합니다. 예를 들어 링커가 생성되면 링커는 1104를 반환합니다 LNK1104. 따라서 링커에서 오류에 대해 반환된 가장 낮은 오류 번호는 1000입니다. 반환 값 128은 운영 체제 또는 .config 파일의 구성 문제를 나타냅니다. 로더가 로드 link.exe 되지 않았거나 c2.dll.

링커 명령 파일

명령줄 인수를 link.exe 명령 파일 형식으로 전달할 수 있습니다. 링커에 명령 파일을 지정하려면 다음 구문을 사용합니다.

link @commandfile

commandfile 텍스트 파일의 이름입니다. at 기호(@)와 파일 이름 사이에 공백이나 탭이 허용되지 않습니다. 기본 확장은 없습니다. 확장명을 포함하여 전체 파일 이름을 지정해야 합니다. Wild카드s를 사용할 수 없습니다. 파일 이름을 사용하여 절대 또는 상대 경로를 지정할 수 있습니다. 링커는 환경 변수를 사용하여 파일을 검색하지 않습니다.

명령 파일에서 인수는 명령줄과 같이 공백 또는 탭과 줄 바꿈 문자로 구분됩니다.

명령 파일에서 명령줄의 전체 또는 일부를 지정할 수 있습니다. 명령에서 link.exe 둘 이상의 명령 파일을 사용할 수 있습니다. 링커는 명령줄의 해당 위치에 지정된 것처럼 명령 파일 입력을 허용합니다. 명령 파일을 중첩할 수 없습니다. 링커는 지정하지 않는 한 /NOLOGO 명령 파일의 내용을 에코합니다.

예시

다음 명령은 DLL을 빌드합니다. 개체 파일 및 라이브러리의 이름을 별도의 명령 파일에 전달하고 옵션 사양 /EXPORTS 에 세 번째 명령 파일을 사용합니다.

link /dll @objlist.txt @liblist.txt @exports.txt

링커는 다음 환경 변수를 인식합니다.

  • LINK_LINK_, 정의된 경우 링커는 환경 변수에 LINK 정의된 옵션 및 인수를 앞에 추가하고 처리하기 전에 환경 변수에 _LINK_ 정의된 옵션 및 인수를 명령줄 인수에 추가합니다.
  • LIB, 정의된 경우 링커는 명령줄 또는 /BASE 옵션에 지정된 개체, 라이브러리 또는 기타 파일을 검색할 때 경로를 사용합니다LIB. 또한 경로를 사용하여 LIB 개체에 .pdb 이름이 지정된 파일을 찾습니다. 변수에는 LIB 세미콜론으로 구분된 하나 이상의 경로 사양이 포함될 수 있습니다. 한 경로는 \lib Visual C++ 설치의 하위 디렉터리를 가리킵니다.
  • PATH도구를 실행 CVTRES 해야 하며 파일 자체를 같은 디렉터리 link.exe 에서 찾을 수 없는 경우 (link.exe파일을 연결 .res 해야 CVTRES 함) PATH 는 Visual C++ 설치의 하위 디렉터리를 가리킵니 \bin 다.
  • TMP- OMF 또는 .res 파일을 연결할 때 디렉터리를 지정합니다.

참고 항목

C/C++ 빌드 참조
MSVC 링커 옵션
모듈 정의(.def) 파일
링커의 지연 로드된 DLL 지원