Udostępnij za pośrednictwem


Wybieranie formatu plików wejściowych .netmodule

Plik .obj MSIL (skompilowany za pomocą /clr) może być również używany jako plik .netmodule. .obj pliki zawierają metadane i symbole natywne. Moduły .netmodules zawierają tylko metadane.

Plik .obj MSIL można przekazać do dowolnego innego kompilatora programu Visual Studio za pośrednictwem opcji kompilatora /addmodule (ale należy pamiętać, że plik .obj staje się częścią wynikowego zestawu i musi zostać dostarczony z zestawem). Na przykład język Visual C# i Visual Basic mają opcję kompilatora /addmodule.

Uwaga

W większości przypadków należy przekazać do konsolidatora plik .obj z kompilacji, która utworzyła moduł .net. Przekazanie pliku modułu .dll lub .netmodule MSIL do konsolidatora może spowodować LNK1107.

.obj plików wraz ze skojarzonymi plikami .h, do których odwołujesz się za pośrednictwem #include w źródle, zezwól aplikacjom języka C++ na korzystanie z typów natywnych w module, natomiast w pliku .netmodule tylko typy zarządzane mogą być używane przez aplikację języka C++. Jeśli spróbujesz przekazać plik .obj do #using, informacje o typach natywnych nie będą dostępne; #include zamiast tego plik h pliku .obj.

Inne kompilatory programu Visual Studio mogą korzystać tylko z typów zarządzanych z modułu.

Użyj poniższych instrukcji, aby określić, czy należy użyć modułu .netmodule, czy pliku .obj jako danych wejściowych modułu do konsolidatora MSVC:

  • Jeśli kompilujesz za pomocą kompilatora programu Visual Studio innego niż Visual C++, utwórz moduł .netmodule i użyj polecenia .netmodule jako danych wejściowych konsolidatora.

  • Jeśli używasz kompilatora MSVC do tworzenia modułów i jeśli moduły będą używane do kompilowania czegoś innego niż biblioteka, użyj plików .obj utworzonych przez kompilator jako dane wejściowe modułu do konsolidatora; nie należy używać pliku .netmodule jako danych wejściowych.

  • Jeśli moduły będą używane do tworzenia natywnej (nie zarządzanej) biblioteki, użyj .obj plików jako danych wejściowych modułu do konsolidatora i wygeneruj plik biblioteki .lib.

  • Jeśli moduły będą używane do tworzenia biblioteki zarządzanej, a wszystkie dane wejściowe modułu do konsolidatora będą weryfikowalne (generowane za pomocą /clr:safe), użyj .obj plików jako danych wejściowych modułu do konsolidatora i wygeneruj plik biblioteki .dll (zestaw) lub .netmodule (module).

  • Jeśli moduły będą używane do tworzenia biblioteki zarządzanej, a jeśli co najmniej jeden moduł wejściowy konsolidatora zostanie utworzony za pomocą polecenia tylko /clr, użyj .obj plików jako danych wejściowych modułu do konsolidatora i wygeneruj .dll (zestaw). Jeśli chcesz uwidocznić typy zarządzane z biblioteki i jeśli chcesz również, aby aplikacje języka C++ mogły korzystać z typów natywnych w bibliotece, biblioteka będzie składać się z plików .obj dla modułów składników bibliotek (należy również wysłać pliki h dla każdego modułu, aby można było się do nich odwoływać z #include z kodu źródłowego).

Zobacz też

Pliki .netmodule — wejście konsolidatora