Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat C++: Gagal memautkan fungsi dengan betul, bagaimana untuk menanganinya?

Ralat C++: Gagal memautkan fungsi dengan betul, bagaimana untuk menanganinya?

PHPz
PHPzasal
2023-08-21 20:45:501008semak imbas

Apabila menulis program dalam C++, kadangkala anda menghadapi masalah tidak memautkan fungsi dengan betul. Ini biasanya berlaku apabila pengkompil tidak dapat mencari definisi fungsi. Apabila masalah ini berlaku, kita perlu menanganinya. Seterusnya, kami akan memperkenalkan definisi fungsi yang tidak boleh dipautkan dengan betul dan cara menanganinya.

1. Gagal memautkan definisi fungsi dengan betul

Gagal memautkan fungsi dengan betul, yang bermaksud bahawa pengkompil tidak boleh mengaitkan rujukan simbol dengan definisi simbol dan tidak dapat mencari pelaksanaan fungsi yang diperlukan. Semasa menyusun, pengkompil akan menyemak sama ada fungsi yang digunakan dalam kod itu mempunyai pelaksanaan Jika tiada pelaksanaan ditemui, ia akan mengeluarkan ralat "simbol yang tidak dapat diselesaikan" Mesej ralat ini biasanya menunjukkan fail dan baris mana ralat berlaku. Mesej ralat biasa adalah seperti berikut:

xxx.obj : error LNK2019: unresolved external symbol “symbol” referenced in function “function” 
xxx.exe : fatal error LNK1120: 1 unresolved externals 

Antaranya, xxx mewakili nama program, symbol ialah nama simbol yang tidak ditemui dan function code> ialah simbol yang dipanggil nama fungsi. <code>xxx表示程序名,symbol是未找到的符号名,function是调用该符号的函数名。

二、未能正确链接函数的原因

  1. 缺少库文件

常见的原因是缺少库文件,而库文件中包含了函数的定义。解决方法是添加此库文件路径到项目属性的附加库目录下。

  1. 函数定义与声明不一致

有时候函数的定义与声明不一致,如函数定义为int func(int a),但在调用时发现函数声明为int func(char a)

2. Sebab mengapa fungsi tidak boleh dipautkan dengan betul
  1. Kekurangan fail perpustakaan

Sebab biasa ialah kekurangan fail perpustakaan, dan fail perpustakaan mengandungi definisi fungsi. Penyelesaiannya adalah untuk menambah laluan fail perpustakaan ini ke direktori perpustakaan tambahan dalam sifat projek.
  1. Takrifan fungsi tidak konsisten dengan pengisytiharan

Kadangkala takrifan fungsi tidak konsisten dengan pengisytiharan Contohnya, fungsi ditakrifkan sebagai int func(int a), tetapi apabila ia berlaku dipanggil, didapati bahawa pengisytiharan fungsi ialah int func(char a). Dalam kes ini, definisi dan pengisytiharan perlu diubah supaya konsisten.

    Nama fungsi salah eja
Mungkin kerana nama fungsi salah eja dan tidak konsisten dengan takrifan apabila dipanggil, dan pengkompil tidak dapat mencari pelaksanaan fungsi. Semak sama ada nama fungsi itu betul.

    Fungsi tiada dalam fail pengepala
Jika pelaksanaan fungsi tiada dalam fail pengepala, anda perlu meletakkan pelaksanaan fungsi ke dalam fail pengepala.

3. Penyelesaian kepada kegagalan memautkan fungsi dengan betul
  1. Semak fail perpustakaan

Mula-mula semak sama ada program kehilangan fail perpustakaan yang berkaitan. Mula-mula anda boleh pergi ke tapak web rasmi untuk memuat turun fail perpustakaan yang sepadan, dan kemudian menambahnya pada direktori perpustakaan tambahan dalam sifat projek. Jika masalah masih tidak dapat diselesaikan, anda boleh cuba memasang semula fail perpustakaan yang sepadan.
  1. Semak definisi dan pengisytiharan fungsi

Pastikan semua fungsi diisytiharkan dan ditakrifkan dengan betul. Takrifan fungsi hendaklah konsisten dengan pengisytiharannya.

Semak ejaan nama fungsi

🎜🎜Pastikan nama fungsi dieja dengan betul dan konsisten dengan definisi. 🎜🎜🎜Masukkan pelaksanaan fungsi ke dalam fail pengepala🎜🎜🎜Masukkan pelaksanaan fungsi ke dalam fail pengepala dan pastikan anda memasukkan fail pengepala semasa memanggil fungsi. 🎜🎜Ringkasan🎜🎜Kegagalan memautkan fungsi dengan betul akan menyebabkan kompilasi program gagal, menyebabkan banyak kesulitan kepada pengaturcara. Untuk mengelakkan situasi ini, adalah perlu untuk melakukan tugas pengisytiharan fungsi, definisi dan rujukan fail perpustakaan dengan baik. Jika terdapat masalah yang fungsinya tidak dapat dipautkan dengan betul, sebaiknya selesaikan masalah dan selesaikannya langkah demi langkah, ketahui sebab khusus dan atasinya dengan sewajarnya. 🎜

Atas ialah kandungan terperinci Ralat C++: Gagal memautkan fungsi dengan betul, bagaimana untuk menanganinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn