Bagikan melalui


Memilih Format File Input .netmodule

File MSIL .obj (dikompilasi dengan /clr) juga dapat digunakan sebagai file .netmodule. File .obj berisi metadata dan simbol asli. .netmodules hanya berisi metadata.

Anda dapat meneruskan file MSIL .obj ke pengkompilasi Visual Studio lainnya melalui opsi kompilator /addmodule (tetapi ketahuilah bahwa file .obj menjadi bagian dari perakitan yang dihasilkan dan harus dikirim dengan rakitan). Misalnya, Visual C# dan Visual Basic memiliki opsi pengkompilasi /addmodule.

Catatan

Dalam kebanyakan kasus, Anda harus meneruskan ke linker file .obj dari kompilasi yang membuat modul .net. Meneruskan file modul MSIL .dll atau .netmodule ke linker dapat mengakibatkan LNK1107.

File .obj, bersama dengan file .h terkait, yang Anda referensikan melalui #include dalam sumber, memungkinkan aplikasi C++ untuk menggunakan jenis asli dalam modul, sedangkan dalam file .netmodule, hanya jenis terkelola yang dapat digunakan oleh aplikasi C++. Jika Anda mencoba meneruskan file .obj ke #using, informasi tentang jenis asli tidak akan tersedia; #include file .h file .obj sebagai gantinya.

Pengkompilasi Visual Studio lainnya hanya dapat menggunakan jenis terkelola dari modul.

Gunakan hal berikut untuk menentukan apakah Anda perlu menggunakan file .netmodule atau .obj sebagai input modul ke linker MSVC:

  • Jika Anda membangun dengan pengkompilasi Visual Studio selain Visual C++, buat .netmodule dan gunakan .netmodule sebagai input ke linker.

  • Jika Anda menggunakan pengkompilasi MSVC untuk menghasilkan modul dan jika modul akan digunakan untuk membangun sesuatu selain pustaka, gunakan file .obj yang dihasilkan oleh pengkompilasi sebagai input modul ke linker; jangan gunakan file .netmodule sebagai input.

  • Jika modul Anda akan digunakan untuk membangun pustaka asli (bukan terkelola), gunakan file .obj sebagai input modul ke linker dan buat file pustaka .lib.

  • Jika modul Anda akan digunakan untuk membangun pustaka terkelola, dan jika semua input modul ke linker akan dapat diverifikasi (diproduksi dengan /clr:safe), gunakan file .obj sebagai input modul ke linker dan buat file pustaka .dll (assembly) atau .netmodule (modul).

  • Jika modul Anda akan digunakan untuk membangun pustaka terkelola, dan jika satu atau beberapa modul input ke linker akan diproduksi hanya dengan /clr, gunakan file .obj sebagai input modul ke linker dan buat .dll (assembly). Jika Anda ingin mengekspos jenis terkelola dari pustaka dan jika Anda juga ingin aplikasi C++ menggunakan jenis asli di pustaka, pustaka Anda akan terdiri dari file .obj untuk modul komponen pustaka (Anda juga ingin mengirim file .h untuk setiap modul, sehingga dapat direferensikan dengan #include dari kode sumber).

Baca juga

File .netmodule sebagai Input Linker