CL에서의 링커 호출

/c 옵션을 사용하지 않는 한 CL은 컴파일 후 링커를 자동으로 호출합니다. CL은 컴파일 중에 생성된 .obj 파일의 이름과 명령줄에 지정된 다른 파일의 이름을 링커에 전달합니다. 링커는 LINK 환경 변수에 나열된 옵션을 사용합니다. /link 옵션을 사용하여 CL 명령줄에서 링커 옵션을 지정할 수 있습니다. /link 옵션을 따르는 옵션은 LINK 환경 변수의 옵션을 재정의합니다. 다음 표의 옵션은 연결을 표시하지 않습니다.

옵션 설명
/c 연결하지 않고 컴파일
/E, /EP, /P 컴파일하거나 연결하지 않고 전처리
/Zg 함수 프로토타입 생성
/Zs 구문 검사

연결에 대한 자세한 내용은 MSVC 링커 옵션을 참조 하세요.

예시

MAIN.c, MOD1.c 및 MOD2.c의 세 가지 C 소스 파일을 컴파일한다고 가정합니다. 각 파일에는 다른 파일에 정의된 함수에 대한 호출이 포함됩니다.

  • MAIN.c는 MOD1.c의 함수 func1 와 MOD2.c의 함수 func2 를 호출합니다.

  • MOD1.c는 표준 라이브러리 함수 및 printf_sscanf_s.

  • MOD2.c는 MYGRAPH.lib라는 라이브러리에 정의된 명명 mylinemycircle그래픽 함수를 호출합니다.

이 프로그램을 빌드하려면 다음 명령줄을 사용하여 컴파일합니다.

CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib

CL은 먼저 C 소스 파일을 컴파일하고 MAIN.obj, MOD1.obj 및 MOD2.obj 개체 파일을 만듭니다. 컴파일러는 표준 라이브러리의 이름을 각 .obj 파일에 배치합니다. 자세한 내용은 런타임 라이브러리 사용을 참조 하세요.

CL은 MYGRAPH.lib 이름과 함께 .obj 파일의 이름을 링커에 전달합니다. 링커는 다음과 같이 외부 참조를 확인합니다.

  1. MAIN.obj에서 참조 func1 는 MOD1.obj의 정의를 사용하여 확인됩니다. 참조 func2 는 MOD2.obj의 정의를 사용하여 확인됩니다.

  2. MOD1.obj에서 링커가 MOD1.obj 내에서 명명된 것을 찾은 라이브러리의 정의를 사용하여 참조 printf_sscanf_s 확인됩니다.

  3. MOD2.obj에서는 MYGRAPH.lib의 정의를 사용하여 참조 mylinemycircle 확인됩니다.

참고 항목

MSVC 컴파일러 옵션
컴파일러 옵션 설정