C++ Poco c++;加密静态库使用在XCode生成时生成错误 当我尝试使用以前使用的静态库(即基础、网络等)编译一个简单的测试项目时,所有的工作都很好,但是当我包含了密码库时,我得到了大量的错误,这可能是因为OpenSSL依赖性造成的吗?我添加了OpenSSL包括文件夹和PoCo基金会、网络、密码以及.XCOD/中的生成设置的基础文件、网络文件、密码文件。

C++ Poco c++;加密静态库使用在XCode生成时生成错误 当我尝试使用以前使用的静态库(即基础、网络等)编译一个简单的测试项目时,所有的工作都很好,但是当我包含了密码库时,我得到了大量的错误,这可能是因为OpenSSL依赖性造成的吗?我添加了OpenSSL包括文件夹和PoCo基金会、网络、密码以及.XCOD/中的生成设置的基础文件、网络文件、密码文件。,c++,xcode,openssl,poco-libraries,C++,Xcode,Openssl,Poco Libraries,守则: //ViewController.h #include <Poco/Crypto/CipherFactory.h> #include <Poco/Crypto/Cipher.h> #include <Poco/Crypto/CipherKey.h> 错误消息: "_BIO_ctrl", referenced from: "_BIO_free", referenced from: "_BIO_new", referenced fr

守则:

//ViewController.h
 #include <Poco/Crypto/CipherFactory.h>
 #include <Poco/Crypto/Cipher.h>
 #include <Poco/Crypto/CipherKey.h>
错误消息:

  "_BIO_ctrl", referenced from:

  "_BIO_free", referenced from:

  "_BIO_new", referenced from:

  "_BIO_new_mem_buf", referenced from:

  "_BIO_s_file", referenced from:

  "_BIO_s_mem", referenced from:

  "_BN_bn2bin", referenced from:

  "_BN_free", referenced from:

  "_BN_new", referenced from:

  "_BN_num_bits", referenced from:

  "_BN_set_word", referenced from:

  "_CRYPTO_num_locks", referenced from:

  "_CRYPTO_set_dynlock_create_callback", referenced from:

  "_CRYPTO_set_dynlock_destroy_callback", referenced from:

  "_CRYPTO_set_dynlock_lock_callback", referenced from:

  "_CRYPTO_set_id_callback", referenced from:

  "_CRYPTO_set_locking_callback", referenced from:

  "_ERR_error_string", referenced from:

  "_ERR_free_strings", referenced from:

  "_ERR_get_error", referenced from:

  "_EVP_BytesToKey", referenced from:

  "_EVP_CIPHER_CTX_block_size", referenced from:

  "_EVP_CIPHER_CTX_cleanup", referenced from:

  "_EVP_CIPHER_CTX_set_padding", referenced from:

  "_EVP_CIPHER_block_size", referenced from:

  "_EVP_CIPHER_flags", referenced from:

  "_EVP_CIPHER_iv_length", referenced from:

  "_EVP_CIPHER_key_length", referenced from:

  "_EVP_CipherFinal_ex", referenced from:

  "_EVP_CipherInit", referenced from:

  "_EVP_CipherUpdate", referenced from:

  "_EVP_PKEY_get1_RSA", referenced from:

  "_EVP_cleanup", referenced from:

  "_EVP_des_ede3_cbc", referenced from:

  "_EVP_get_cipherbyname", referenced from:

  "_EVP_md5", referenced from:

  "_OPENSSL_add_all_algorithms_noconf", referenced from:

  "_OPENSSL_config", referenced from:

  "_PEM_read_bio_RSAPrivateKey", referenced from:

  "_PEM_read_bio_RSAPublicKey", referenced from:

  "_PEM_read_bio_RSA_PUBKEY", referenced from:

  "_PEM_write_bio_RSAPrivateKey", referenced from:

  "_PEM_write_bio_RSAPublicKey", referenced from:

  "_RAND_seed", referenced from:

  "_RSA_free", referenced from:

  "_RSA_generate_key_ex", referenced from:

  "_RSA_new", referenced from:

  "_RSA_private_decrypt", referenced from:

  "_RSA_public_encrypt", referenced from:

  "_RSA_size", referenced from:

  "_SSL_library_init", referenced from:

  "_SSL_load_error_strings", referenced from:

  "_X509_get_pubkey", referenced from:

  "Poco::Crypto::CipherKey::CipherKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:

  "std::istream::gcount() const", referenced from:

  "std::string::at(unsigned long) const", referenced from:

  "std::string::data() const", referenced from:

  "std::string::size() const", referenced from:

  "std::string::c_str() const", referenced from:

  "std::string::empty() const", referenced from:

  "std::string::length() const", referenced from:

  "std::string::operator[](unsigned long) const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::gptr() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pptr() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::eback() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::egptr() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pbase() const", referenced from:

  "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::str() const", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::good() const", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::rdbuf() const", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::operator void*() const", referenced from:

  "std::allocator<char>::std::allocator()", referenced from:

  "std::allocator<char>::~std::allocator()", referenced from:

  "std::istream::get(char&)", referenced from:

  "std::istream::get()", referenced from:

  "std::istream::read(char*, int)", referenced from:

  "std::istream::std::istream(std::basic_streambuf<char, std::char_traits<char> >*)", referenced from:

  "std::istream::~std::istream()", referenced from:

  "std::ostream::put(char)", referenced from:

  "std::ostream::write(char const*, int)", referenced from:

  "std::ostream::std::ostream(std::basic_streambuf<char, std::char_traits<char> >*)", referenced from:

  "std::ostream::~std::ostream()", referenced from:

  "std::ostream::operator<<(int)", referenced from:

  "std::string::append(char const*)", referenced from:

  "std::string::append(char const*, unsigned long)", referenced from:

  "std::string::append(std::string const&)", referenced from:

  "std::string::reserve(unsigned long)", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from:

  "std::string::operator=(std::string const&)", referenced from:

  "std::string::operator+=(char)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::setg(char*, char*, char*)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::setp(char*, char*)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::sync()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::imbue(std::locale const&)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pbump(int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::sputc(char)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::uflow()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::sbumpc()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::setbuf(char*, int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::xsgetn(char*, int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pubsync()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::seekoff(long long, std::_Ios_Seekdir, std::_Ios_Openmode)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<__mbstate_t>, std::_Ios_Openmode)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pbackfail(int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::showmanyc()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::basic_streambuf()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf()", referenced from:

  "std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::basic_istringstream(std::string const&, std::_Ios_Openmode)", referenced from:

  "std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_istringstream()", referenced from:

  "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)", referenced from:

  "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()", referenced from:

  "std::ios_base::Init::Init()", referenced from:

  "std::ios_base::Init::~Init()", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::basic_ios()", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::~basic_ios()", referenced from:

  "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from:

  "std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from:

  "std::__throw_length_error(char const*)", referenced from:

  "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:

  "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:

  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)", referenced from:

  "typeinfo for std::istream", referenced from:

  "typeinfo for std::ostream", referenced from:

  "typeinfo for std::basic_streambuf<char, std::char_traits<char> >", referenced from:

  "typeinfo for std::basic_ios<char, std::char_traits<char> >", referenced from:

  "non-virtual thunk to std::istream::~std::istream()", referenced from:

  "non-virtual thunk to std::ostream::~std::ostream()", referenced from:

clang: error: linker command failed with exit code 1 (use -v to see invocation)
“\u BIO\u ctrl”,引用自:
“_BIO_free”,引用自:
“_BIO_new”,引用自:
“_BIO_new_mem_buf”,引用自:
“_BIO_s_文件”,引用自:
“_BIO_s_mem”,引用自:
“_BN_bn2bin”,引用自:
“免费”,引用自:
“新”,引用自:
“_BN_num_bits”,引用自:
“\u BN\u set\u word”,引用自:
“_CRYPTO_num_locks”,引用自:
“_CRYPTO_set_dynlock_create_callback”,引用自:
“加密设置动态锁定销毁回调”,引用自:
“_CRYPTO_set_dynlock_lock_callback”,引用自:
“_CRYPTO_set_id_callback”,引用自:
“加密设置锁定回调”,引用自:
“\u ERR\u error\u string”,引用自:
“\u ERR\u free\u字符串”,引用自:
“\u ERR\u get\u error”,引用自:
“_EVP_BytesToKey”,引用自:
“_EVP_CIPHER_CTX_block_size”,引用自:
“_EVP_CIPHER_CTX_cleanup”,引用自:
“_EVP_CIPHER_CTX_set_padding”,引用自:
“_EVP_CIPHER_block_size”,引用自:
“_EVP_CIPHER_flags”,引用自:
“_EVP_CIPHER_iv_length”,引用自:
“_EVP_CIPHER_key_length”,引用自:
“\u EVP\u CipherFinal\u ex”,引用自:
“_EVP_cipherit”,引用自:
“执行副总裁密码更新”,引用自:
“_EVP_PKEY_get1_RSA”,引用自:
“执行副总裁清理”,引用自:
“_EVP_des_ede3_cbc”,引用自:
“_EVP_get_cipherbyname”,引用自:
“执行副总裁”引用自:
“\u OPENSSL\u add\u all\u algorithms\u noconf”,引用自:
“\u OPENSSL\u config”,引用自:
“_PEM_read_bio_rsaprovatekey”,引用自:
“\u PEM\u read\u bio\r公钥”,引用自:
“_PEM_read_bio_RSA_PUBKEY”,引用自:
“_PEM_write_bio_RSAPrivateKey”,引用自:
“\u PEM\u write\u bio\r公钥”,参考自:
“_RAND_seed”,引用自:
“\u RSA\u free”,引用自:
“_RSA_generate_key_ex”,引用自:
“\u RSA\u new”,引用自:
“\u RSA\u private\u decrypt”,引用自:
“\u RSA\u public\u encrypt”,引用自:
“\u RSA\u size”,引用自:
“\u SSL\u library\u init”,引用自:
“\u SSL\u加载\u错误\u字符串”,引用自:
“_X509_get_pubkey”,引用自:
“Poco::Crypto::CipherKey::CipherKey(标准::基本字符串常量&)”,引用自:
“std::istream::gcount()const”,引用自:
“std::string::at(unsigned long)const”,引用自:
“std::string::data()const”,引用自:
“std::string::size()const”,引用自:
“std::string::c_str()const”,引用自:
“std::string::empty()const”,引用自:
“std::string::length()const”,引用自:
“std::string::operator[](无符号长)const”,引用自:
“std::basic_streambuf::gptr()const”,引用自:
“std::basic_streambuf::pptr()const”,引用自:
“std::basic_streambuf::eback()const”,引用自:
“std::basic_streambuf::egptr()const”,引用自:
“std::basic_streambuf::pbase()const”,引用自:
“std::basic_ostringstream::str()const”,引用自:
“std::basic_ios::good()const”,引用自:
“std::basic_ios::rdbuf()const”,引用自:
“std::basic_ios::operator void*()const”,引用自:
“std::allocator::std::allocator()”,引用自:
“std::allocator::~std::allocator()”,引用自:
“std::istream::get(char&)”,引用自:
“std::istream::get()”,引用自:
“std::istream::read(char*,int)”,引用自:
“std::istream::std::istream(std::basic_streambuf*)”,引用自:
“std::istream::~std::istream()”,引用自:
“std::ostream::put(char)”,引用自:
“std::ostream::write(char const*,int)”,引用自:
“std::ostream::std::ostream(std::basic_streambuf*)”,引用自:
“std::ostream::~std::ostream()”,引用自:

“std::ostream::operator问题实际上不在您的代码中。您需要使用构建在完全相同平台上的
libcrypto.a
libssl.a
。特别是如果您用于iOS模拟器,它将用于设备的
i386
arm6或arm7
。因此,应该有特定于平台的库。您可以从网站获取此库代码,并使用相同的体系结构进行编译,或者创建一个适用于多平台的fat库。

是否通过此命令配置了必要的构建:./configure--config=iPhoneSimulator--no samples--no tests--omit=CppParser,code generation,Remoting/RemoteGen,NetSSL_OpenSSL,Data/ODBC,Data/MySQL--include-path=/Users/exjobb/Downloads/openssl-1.0.1e/includeYou可以从命令行执行。请遵循此操作。检查您的配置命令是否与链接一致。既然您接受了PCBAB的答案,看起来您是在为iOS构建。在这种情况下,您可以在上获得iOS的预构建多拱openssl库。它有ur架构:ARMv7、ARMv7s、ARM64和i386模拟器。
  "_BIO_ctrl", referenced from:

  "_BIO_free", referenced from:

  "_BIO_new", referenced from:

  "_BIO_new_mem_buf", referenced from:

  "_BIO_s_file", referenced from:

  "_BIO_s_mem", referenced from:

  "_BN_bn2bin", referenced from:

  "_BN_free", referenced from:

  "_BN_new", referenced from:

  "_BN_num_bits", referenced from:

  "_BN_set_word", referenced from:

  "_CRYPTO_num_locks", referenced from:

  "_CRYPTO_set_dynlock_create_callback", referenced from:

  "_CRYPTO_set_dynlock_destroy_callback", referenced from:

  "_CRYPTO_set_dynlock_lock_callback", referenced from:

  "_CRYPTO_set_id_callback", referenced from:

  "_CRYPTO_set_locking_callback", referenced from:

  "_ERR_error_string", referenced from:

  "_ERR_free_strings", referenced from:

  "_ERR_get_error", referenced from:

  "_EVP_BytesToKey", referenced from:

  "_EVP_CIPHER_CTX_block_size", referenced from:

  "_EVP_CIPHER_CTX_cleanup", referenced from:

  "_EVP_CIPHER_CTX_set_padding", referenced from:

  "_EVP_CIPHER_block_size", referenced from:

  "_EVP_CIPHER_flags", referenced from:

  "_EVP_CIPHER_iv_length", referenced from:

  "_EVP_CIPHER_key_length", referenced from:

  "_EVP_CipherFinal_ex", referenced from:

  "_EVP_CipherInit", referenced from:

  "_EVP_CipherUpdate", referenced from:

  "_EVP_PKEY_get1_RSA", referenced from:

  "_EVP_cleanup", referenced from:

  "_EVP_des_ede3_cbc", referenced from:

  "_EVP_get_cipherbyname", referenced from:

  "_EVP_md5", referenced from:

  "_OPENSSL_add_all_algorithms_noconf", referenced from:

  "_OPENSSL_config", referenced from:

  "_PEM_read_bio_RSAPrivateKey", referenced from:

  "_PEM_read_bio_RSAPublicKey", referenced from:

  "_PEM_read_bio_RSA_PUBKEY", referenced from:

  "_PEM_write_bio_RSAPrivateKey", referenced from:

  "_PEM_write_bio_RSAPublicKey", referenced from:

  "_RAND_seed", referenced from:

  "_RSA_free", referenced from:

  "_RSA_generate_key_ex", referenced from:

  "_RSA_new", referenced from:

  "_RSA_private_decrypt", referenced from:

  "_RSA_public_encrypt", referenced from:

  "_RSA_size", referenced from:

  "_SSL_library_init", referenced from:

  "_SSL_load_error_strings", referenced from:

  "_X509_get_pubkey", referenced from:

  "Poco::Crypto::CipherKey::CipherKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:

  "std::istream::gcount() const", referenced from:

  "std::string::at(unsigned long) const", referenced from:

  "std::string::data() const", referenced from:

  "std::string::size() const", referenced from:

  "std::string::c_str() const", referenced from:

  "std::string::empty() const", referenced from:

  "std::string::length() const", referenced from:

  "std::string::operator[](unsigned long) const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::gptr() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pptr() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::eback() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::egptr() const", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pbase() const", referenced from:

  "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::str() const", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::good() const", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::rdbuf() const", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::operator void*() const", referenced from:

  "std::allocator<char>::std::allocator()", referenced from:

  "std::allocator<char>::~std::allocator()", referenced from:

  "std::istream::get(char&)", referenced from:

  "std::istream::get()", referenced from:

  "std::istream::read(char*, int)", referenced from:

  "std::istream::std::istream(std::basic_streambuf<char, std::char_traits<char> >*)", referenced from:

  "std::istream::~std::istream()", referenced from:

  "std::ostream::put(char)", referenced from:

  "std::ostream::write(char const*, int)", referenced from:

  "std::ostream::std::ostream(std::basic_streambuf<char, std::char_traits<char> >*)", referenced from:

  "std::ostream::~std::ostream()", referenced from:

  "std::ostream::operator<<(int)", referenced from:

  "std::string::append(char const*)", referenced from:

  "std::string::append(char const*, unsigned long)", referenced from:

  "std::string::append(std::string const&)", referenced from:

  "std::string::reserve(unsigned long)", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()", referenced from:

  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from:

  "std::string::operator=(std::string const&)", referenced from:

  "std::string::operator+=(char)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::setg(char*, char*, char*)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::setp(char*, char*)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::sync()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::imbue(std::locale const&)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pbump(int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::sputc(char)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::uflow()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::sbumpc()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::setbuf(char*, int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::xsgetn(char*, int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pubsync()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::seekoff(long long, std::_Ios_Seekdir, std::_Ios_Openmode)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<__mbstate_t>, std::_Ios_Openmode)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::pbackfail(int)", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::showmanyc()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::basic_streambuf()", referenced from:

  "std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf()", referenced from:

  "std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::basic_istringstream(std::string const&, std::_Ios_Openmode)", referenced from:

  "std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_istringstream()", referenced from:

  "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)", referenced from:

  "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()", referenced from:

  "std::ios_base::Init::Init()", referenced from:

  "std::ios_base::Init::~Init()", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::basic_ios()", referenced from:

  "std::basic_ios<char, std::char_traits<char> >::~basic_ios()", referenced from:

  "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from:

  "std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from:

  "std::__throw_length_error(char const*)", referenced from:

  "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:

  "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:

  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)", referenced from:

  "typeinfo for std::istream", referenced from:

  "typeinfo for std::ostream", referenced from:

  "typeinfo for std::basic_streambuf<char, std::char_traits<char> >", referenced from:

  "typeinfo for std::basic_ios<char, std::char_traits<char> >", referenced from:

  "non-virtual thunk to std::istream::~std::istream()", referenced from:

  "non-virtual thunk to std::ostream::~std::ostream()", referenced from:

clang: error: linker command failed with exit code 1 (use -v to see invocation)