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
Variabel lingkungan LINK
Linker mengenali variabel lingkungan berikut:
LINK
dan_LINK_
, jika didefinisikan. Linker menambahkan opsi dan argumen yang ditentukan dalamLINK
variabel lingkungan dan menambahkan opsi dan argumen yang ditentukan dalam_LINK_
variabel lingkungan ke argumen baris perintah sebelum diproses.LIB
, jika ditentukan. Linker menggunakanLIB
jalur saat mencari objek, pustaka, atau file lain yang ditentukan pada baris perintah atau dengan/BASE
opsi . Ini juga menggunakanLIB
jalur untuk menemukan file bernama.pdb
dalam objek. VariabelLIB
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 berjalanCVTRES
dan tidak dapat menemukan file di direktori yang sama denganlink.exe
itu sendiri. (link.exe
perluCVTRES
menautkan.res
file.)PATH
harus menunjuk ke\bin
subdirektori penginstalan Visual C++Anda.TMP
, untuk menentukan direktori saat menautkan OMF atau.res
file.
Lihat juga
Referensi Bangunan C/C++
Opsi MSVC Linker
File Module-Definition (.def)
Dukungan Linker untuk DLL yang Dimuat Penundaan