Menghubungkan

Dalam proyek C++, langkah penautan dilakukan setelah pengkompilasi mengkompilasi kode sumber ke dalam file objek (*.obj). Linker (link.exe) menggabungkan file objek ke dalam satu file yang dapat dieksekusi.

Opsi linker dapat diatur di dalam atau di luar Visual Studio. Dalam Visual Studio, Anda mengakses opsi linker dengan mengklik kanan node proyek di Penjelajah Solusi dan memilih Properti untuk menampilkan halaman properti. Pilih Linker di panel kiri untuk memperluas simpul dan melihat semua opsi.

Sintaksis baris perintah Linker

Saat menjalankan linker di luar Visual Studio, Anda dapat menentukan input dengan satu atau beberapa cara:

  • Pada baris perintah
  • Menggunakan file perintah
  • Dalam variabel lingkungan

Linker pertama kali memproses opsi yang ditentukan dalam LINK variabel lingkungan, diikuti dengan opsi dalam urutan yang ditentukan pada baris perintah dan dalam file perintah. Jika opsi diulang dengan argumen yang berbeda, yang terakhir diproses lebih diutamakan.

Opsi berlaku untuk seluruh build; tidak ada opsi yang dapat diterapkan ke file input tertentu.

Untuk menjalankan link.exe, gunakan sintaks perintah berikut:

link arguments

Opsi sertakan arguments dan nama file dan dapat ditentukan dalam urutan apa pun. Opsi diproses terlebih dahulu, lalu file. Gunakan satu atau beberapa spasi atau tab untuk memisahkan argumen.

Catatan

Anda hanya dapat memulai alat ini dari prompt perintah Visual Studio. Anda tidak dapat memulainya dari prompt perintah sistem atau dari File Explorer.

Baris perintah

Pada baris perintah, opsi terdiri dari penentu opsi, baik tanda hubung (-) atau garis miring (/), diikuti dengan nama opsi. Nama opsi tidak dapat disingkat. Beberapa opsi mengambil argumen, ditentukan setelah titik dua (:). Tidak ada spasi atau tab yang diizinkan dalam spesifikasi opsi, kecuali dalam string yang dikutip dalam /COMMENT opsi . Tentukan argumen numerik dalam notasi desimal atau bahasa C. Nama opsi dan kata kunci atau argumen nama file mereka tidak peka huruf besar/kecil, tetapi pengidentifikasi sebagai argumen peka huruf besar/kecil.

Untuk meneruskan file ke linker, tentukan nama file pada baris perintah setelah link.exe perintah. Anda dapat menentukan jalur absolut atau relatif dengan nama file, dan Anda dapat menggunakan kartubebas dalam nama file. Jika Anda menghilangkan ekstensi titik (.) dan nama file, linker mengasumsikan ekstensi .obj untuk menemukan file. Linker tidak menggunakan ekstensi nama file atau kurangnya ekstensi untuk membuat asumsi tentang konten file. Ini menentukan jenis file dengan memeriksanya, dan memprosesnya dengan sesuai.

Linker mengembalikan nol untuk keberhasilan (tidak ada kesalahan). Jika tidak, ia mengembalikan nomor kesalahan yang menghentikan tautan. Misalnya, jika linker menghasilkan LNK1104, linker mengembalikan 1104. Dengan demikian, nomor kesalahan terendah yang dikembalikan pada kesalahan oleh linker adalah 1000. Nilai pengembalian 128 mewakili masalah konfigurasi dengan sistem operasi atau file .config; loader tidak memuat baik link.exe atau c2.dll.

File perintah Linker

Anda dapat meneruskan argumen baris perintah ke link.exe dalam bentuk file perintah. Untuk menentukan file perintah ke linker, gunakan sintaks berikut:

link @commandfile

commandfile adalah nama file teks. Tidak ada spasi atau tab yang diperbolehkan antara tanda (@) dan nama file. Tidak ada ekstensi default; Anda harus menentukan nama file lengkap, termasuk ekstensi apa pun. Kartubebas tidak dapat digunakan. Anda dapat menentukan jalur absolut atau relatif dengan nama file. Linker tidak menggunakan variabel lingkungan untuk mencari file.

Dalam file perintah, argumen dipisahkan oleh spasi atau tab (seperti pada baris perintah) dan oleh karakter baris baru.

Anda dapat menentukan semua atau sebagian baris perintah dalam file perintah. Anda dapat menggunakan lebih dari satu file perintah dalam perintah link.exe . Linker menerima input file perintah seolah-olah ditentukan di lokasi tersebut pada baris perintah. File perintah tidak dapat ditumpuk. Linker menggemakan konten file perintah, kecuali /NOLOGO ditentukan.

Contoh

Perintah berikut membangun DLL. Ini meneruskan nama file objek dan pustaka dalam file perintah terpisah dan menggunakan file perintah ketiga untuk spesifikasi /EXPORTS opsi:

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

Linker mengenali variabel lingkungan berikut:

  • LINK dan _LINK_, jika didefinisikan. Linker menambahkan opsi dan argumen yang ditentukan dalam LINK variabel lingkungan dan menambahkan opsi dan argumen yang ditentukan dalam _LINK_ variabel lingkungan ke argumen baris perintah sebelum diproses.
  • LIB, jika ditentukan. Linker menggunakan LIB jalur saat mencari objek, pustaka, atau file lain yang ditentukan pada baris perintah atau dengan /BASE opsi . Ini juga menggunakan LIB jalur untuk menemukan file bernama .pdb dalam objek. Variabel LIB dapat berisi satu atau beberapa spesifikasi jalur, dipisahkan oleh titik koma. Satu jalur harus menunjuk ke \lib subdirektori penginstalan Visual C++Anda.
  • PATH, jika alat perlu berjalan CVTRES dan tidak dapat menemukan file di direktori yang sama dengan link.exe itu sendiri. (link.exe perlu CVTRES menautkan .res file.) PATH harus menunjuk ke \bin subdirektori penginstalan Visual C++Anda.
  • TMP, untuk menentukan direktori saat menautkan OMF atau .res file.

Baca juga

Referensi Bangunan C/C++
Opsi MSVC Linker
File Module-Definition (.def)
Dukungan Linker untuk DLL yang Dimuat Penundaan