ilihuimin 发表于 2019-7-1 15:42:41

小甲鱼c++快速入门 第四讲,复制文件的代码,我的总是出现报错

这是源代码,后面的是报错,我又去实验了了一下其他鱼油的代码,好是一样的报错,
请问这是什么原因,是用mac的终端编译的

后面的是报错


Undefined symbols for architecture x86_64:
"std::__1::locale::has_facet(std::__1::locale::id&) const", referenced from:
      bool std::__1::has_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in fileCopy-aa2d08.o
"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      std::__1::codecvt<char, char, __mbstate_t> const& std::__1::use_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in fileCopy-aa2d08.o
      std::__1::ctype<char> const& std::__1::use_facet<std::__1::ctype<char> >(std::__1::locale const&) in fileCopy-aa2d08.o
"std::__1::ios_base::getloc() const", referenced from:
      std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const in fileCopy-aa2d08.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(unsigned long, char) in fileCopy-aa2d08.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in fileCopy-aa2d08.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::read(char*, long)", referenced from:
      _main in fileCopy-aa2d08.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in fileCopy-aa2d08.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::write(char const*, long)", referenced from:
      _main in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::basic_ofstream(char const*, unsigned int) in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() in fileCopy-aa2d08.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsgetn(char*, long)", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, long)", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::showmanyc()", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::basic_streambuf()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in fileCopy-aa2d08.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in fileCopy-aa2d08.o
"std::__1::cout", referenced from:
      _main in fileCopy-aa2d08.o
"std::__1::ctype<char>::id", referenced from:
      std::__1::ctype<char> const& std::__1::use_facet<std::__1::ctype<char> >(std::__1::locale const&) in fileCopy-aa2d08.o
"std::__1::locale::locale(std::__1::locale const&)", referenced from:
      std::__1::basic_streambuf<char, std::__1::char_traits<char> >::getloc() const in fileCopy-aa2d08.o
"std::__1::locale::~locale()", referenced from:
      std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in fileCopy-aa2d08.o
"std::__1::codecvt<char, char, __mbstate_t>::id", referenced from:
      std::__1::codecvt<char, char, __mbstate_t> const& std::__1::use_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in fileCopy-aa2d08.o
      bool std::__1::has_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in fileCopy-aa2d08.o
"std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in fileCopy-aa2d08.o
"std::__1::ios_base::init(void*)", referenced from:
      std::__1::basic_ios<char, std::__1::char_traits<char> >::init(std::__1::basic_streambuf<char, std::__1::char_traits<char> >*) in fileCopy-aa2d08.o
"std::__1::ios_base::clear(unsigned int)", referenced from:
      std::__1::ios_base::setstate(unsigned int) in fileCopy-aa2d08.o
"std::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::basic_ofstream(char const*, unsigned int) in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() in fileCopy-aa2d08.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in fileCopy-aa2d08.o
"std::bad_cast::bad_cast()", referenced from:
      std::__1::__throw_bad_cast() in fileCopy-aa2d08.o
"std::bad_cast::~bad_cast()", referenced from:
      std::__1::__throw_bad_cast() in fileCopy-aa2d08.o
"std::terminate()", referenced from:
      ___clang_call_terminate in fileCopy-aa2d08.o
"typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char> >", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
      typeinfo for std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"typeinfo for std::__1::basic_ostream<char, std::__1::char_traits<char> >", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
      typeinfo for std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char> >", referenced from:
      typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"typeinfo for std::bad_cast", referenced from:
      std::__1::__throw_bad_cast() in fileCopy-aa2d08.o
"vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
      typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
      typeinfo for std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for std::__1::ios_base", referenced from:
      std::__1::ios_base::ios_base() in fileCopy-aa2d08.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for std::__1::basic_ios<char, std::__1::char_traits<char> >", referenced from:
      std::__1::basic_ios<char, std::__1::char_traits<char> >::basic_ios() in fileCopy-aa2d08.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in fileCopy-aa2d08.o
"operator delete[](void*)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in fileCopy-aa2d08.o
"operator delete(void*)", referenced from:
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in fileCopy-aa2d08.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in fileCopy-aa2d08.o
"operator new[](unsigned long)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in fileCopy-aa2d08.o
"___cxa_allocate_exception", referenced from:
      std::__1::__throw_bad_cast() in fileCopy-aa2d08.o
"___cxa_begin_catch", referenced from:
      ___clang_call_terminate in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in fileCopy-aa2d08.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in fileCopy-aa2d08.o
"___cxa_call_unexpected", referenced from:
      std::__1::unique_ptr<__sFILE, int (*)(__sFILE*)>::reset(__sFILE*) in fileCopy-aa2d08.o
      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >::ostreambuf_iterator(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in fileCopy-aa2d08.o
      bool std::__1::has_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in fileCopy-aa2d08.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::__make_mdstring(unsigned int) in fileCopy-aa2d08.o
"___cxa_end_catch", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in fileCopy-aa2d08.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in fileCopy-aa2d08.o
"___cxa_throw", referenced from:
      std::__1::__throw_bad_cast() in fileCopy-aa2d08.o
"___gxx_personality_v0", referenced from:
      _main in fileCopy-aa2d08.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::basic_ofstream(char const*, unsigned int) in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() in fileCopy-aa2d08.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() in fileCopy-aa2d08.o
      std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() in fileCopy-aa2d08.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

newu 发表于 2019-7-1 15:42:42

ilihuimin 发表于 2019-7-1 15:43
源代码

mac下用什么编译器编译的,我这里编译没有问题啊,是不是你用了编译C的方式来编译c++,
Linux下是要用g++来编译的

ilihuimin 发表于 2019-7-1 15:43:35

源代码


#include <iostream>
#include <fstream>

using namespace std;

int main(int argc,char *argv[])
{
    //验证输入格式
    if(argc != 3)
    {
      cout << "请按照亲一下格式输出:\n"<<"fileCopy 源文件 目标文件"<<endl;
      exit(EXIT_FAILURE);
    }

    ifstream read(argv,ios::binary | ios::in);
    ofstream write(argv,ios::binary | ios::out);

    if(read == NULL)
    {
      cout<<"要复制的文件不存在!"<< endl;
      exit (EXIT_FAILURE);
    }

    char i ;

    while(read.read(&i,1))
    {
      write.write(&i,1);
    }

    cout << "文件复制成功!" << endl;

    return 0;

}

方大侠 发表于 2019-7-1 16:08:58

楼上说的对 应该有
g++ test.cpp -o test 编译
而不是gcc test.cpp -o test

ilihuimin 发表于 2019-7-2 09:14:15

ilihuimin 发表于 2019-7-1 15:43
源代码

是的,谢谢

ilihuimin 发表于 2019-7-2 09:14:50

方大侠 发表于 2019-7-1 16:08
楼上说的对 应该有
g++ test.cpp -o test 编译
而不是gcc test.cpp -o test

谢谢
页: [1]
查看完整版本: 小甲鱼c++快速入门 第四讲,复制文件的代码,我的总是出现报错