Soalan:
Saya menerima ralat semasa menyusun atur cara C asas pada macOS Singa.
Kod:
#include <iostream> using namespace std; int main(int argc, char *argv[]) { for (int i = 0; i < 10; i++) { cout << "hi"; cout << endl; } return 0; }
Kompilasi Arahan:
cc main.cpp
Ralat:
Undefined symbols for architecture x86_64: "std::cout", referenced from: _main in ccBdbc76.o "std::basic_ostream<char, std::char_traits<char> > & std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &, char const*)", referenced from: _main in ccBdbc76.o "std::basic_ostream<char, std::char_traits<char> > & std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &)", referenced from: _main in ccBdbc76.o "std::basic_ostream<char, std::char_traits<char> >::operator<< (std::basic_ostream<char, std::char_traits<char> > & (*)(std::basic_ostream<char, std::char_traits<char> > &))", referenced from: _main in ccBdbc76.o "std::ios_base::Init::Init()", referenced from: __static_initialization_and_destruction_0(int, int)in ccBdbc76.o "std::ios_base::Init::~Init()", referenced from: ___tcf_0 in ccBdbc76.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status
Jawapan:
Ralat jenis ini biasanya berlaku apabila kod C disusun menggunakan bahagian hadapan C. Walaupun pengkompil C memahami dan menyusun fail sebagai C , ia gagal semasa memaut kerana tiada rujukan kepada perpustakaan C. Untuk menyelesaikan isu ini, pastikan anda menggunakan pengkompil C sebaliknya. Gantikan cc dengan g atau clang apabila menyusun kod:
g++ main.cpp clang++ main.cpp
Menggunakan pengkompil C yang betul memautkan kod dengan perpustakaan yang diperlukan dan menyelesaikan ralat simbol yang tidak ditentukan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Simbol Tidak Ditakrifkan' Semasa Mengumpul Kod C Mudah pada macOS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!