다음을 통해 공유


.netmodule 입력 파일 형식 선택

MSIL .obj 파일(/clr컴파일됨)을 .netmodule 파일로 사용할 수도 있습니다. .obj 파일에는 메타데이터와 네이티브 기호가 포함됩니다. .netmodules에는 메타데이터만 포함됩니다.

/addmodule 컴파일러 옵션을 통해 MSIL .obj 파일을 다른 Visual Studio 컴파일러에 전달할 수 있습니다(하지만 .obj 파일이 결과 어셈블리의 일부가 되고 어셈블리와 함께 제공되어야 합니다). 예를 들어 Visual C# 및 Visual Basic에는 /addmodule 컴파일러 옵션이 있습니다.

참고 항목

대부분의 경우 .net 모듈을 생성한 컴파일로부터 가져온 .obj 파일을 링커에 전달해야 합니다. .dll 또는 .netmodule MSIL 모듈 파일을 링커에 전달하면 LNK1107이 발생할 수 있습니다.

소스에서 #include를 통해 참조하는 연결된 .h 파일과 함께 .obj 파일은 C++ 애플리케이션이 모듈에서 고유 형식을 사용할 수 있도록 허용하며, 반면에 .netmodule 파일에서는 C++ 애플리케이션이 관리되는 형식만 사용할 수 있습니다. .obj 파일을 #using 전달하려고 하면 네이티브 형식에 대한 정보를 사용할 수 없습니다. 대신 .obj 파일의 .h 파일을 #include.

다른 Visual Studio 컴파일러는 모듈에서 관리되는 형식만 사용할 수 있습니다.

MSVC 링커에 대한 모듈 입력으로 .netmodule 또는 .obj 파일을 사용해야 하는지 여부를 확인하려면 다음을 사용합니다.

  • Visual C++ 이외의 Visual Studio 컴파일러로 빌드하는 경우 .netmodule을 생성하고 .netmodule을 링커에 대한 입력으로 사용합니다.

  • MSVC 컴파일러를 사용하여 모듈을 생성하고 모듈을 사용하여 라이브러리 이외의 항목을 빌드하는 경우 컴파일러에서 생성한 .obj 파일을 링커에 대한 모듈 입력으로 사용합니다. 에서는 .netmodule 파일을 입력으로 사용하지 않습니다.

  • 모듈을 사용하여 네이티브(관리되지 않는) 라이브러리를 빌드하는 경우 .obj 파일을 링커에 대한 모듈 입력으로 사용하고 .lib 라이브러리 파일을 생성합니다.

  • 모듈이 관리되는 라이브러리를 빌드하는 데 사용되고 링커에 대한 모든 모듈 입력을 확인할 수 있는 경우(/clr:safe로 생성), .obj 파일을 링커에 대한 모듈 입력으로 사용하고 .dll(어셈블리) 또는 .netmodule(모듈) 라이브러리 파일을 생성합니다.

  • 모듈을 사용하여 관리되는 라이브러리를 빌드하고 링커에 대한 하나 이상의 모듈 입력이 /clr로 생성되는 경우 .obj 파일을 링커에 대한 모듈 입력으로 사용하고 .dll(어셈블리)를 생성합니다. 라이브러리에서 관리되는 형식을 노출하고 C++ 애플리케이션에서 라이브러리의 네이티브 형식을 사용하려는 경우 라이브러리는 라이브러리 구성 요소 모듈에 대한 .obj 파일로 구성됩니다(소스 코드의 #include 사용하여 참조할 수 있도록 각 모듈에 대한 .h 파일도 제공하려고 합니다).

참고 항목

링커 입력 파일로 사용하는 .netmodule 파일