- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试使用我之前使用的静态库(即 Foundation、Net 等)编译一个简单的测试项目时。一切正常,但是当我包含 Crypto 库时,我遇到了很多错误,这是否是由 openssl 依赖项引起的?我已经将 openssl include 文件夹和 Poco Foundation、Net、Crypto 以及用于 Foundation、Net、Crypto 的 .a 文件添加到 XCode 的build设置中
代码:
//ViewController.h
#include <Poco/Crypto/CipherFactory.h>
#include <Poco/Crypto/Cipher.h>
#include <Poco/Crypto/CipherKey.h>
在我的 ViewDidLoad 中:
//ViewController.mm
std::string headKey = "TESTSTRING";
// encode the string
CipherFactory& factory = CipherFactory::defaultFactory();
// Creates a 256-bit AES cipher
Cipher* pCipher = factory.createCipher(CipherKey("aes-256"));
std::string encrypted = pCipher->encryptString(headKey, Cipher::ENC_BASE64);
std::string decrypted = pCipher->decryptString(encrypted, Cipher::ENC_BASE64);
NSLog([NSString stringWithUTF8String:encrypted.c_str()]);
错误信息:
"_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)
最佳答案
问题实际上不在您的代码中。您需要使用构建在完全相同平台上的 libcrypto.a
或 libssl.a
。特别是如果您使用的是 iOS 模拟器,它将用于 i386
或 arm6 或 arm7
(如果是设备)。所以,应该有平台特定的库。您可以从网站上获取此库代码并使用相同的体系结构进行编译,或者制作一个适用于多个平台的胖库。
关于c++ - Poco c++ Crypto 静态库的使用在 XCode 构建中产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056203/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
在 C# 静态方法中是否有一种方法可以引用定义该方法的类型? 在实例方法中,您可以通过以下方式确定类型: public void Foo() { Type type = this.GetTyp
WPF:静态、动态资源以及资源词典 静态资源与动态资源 我们常常会使用样式或者控件模板放在Window.Resources中,比如这样: 静态资源与动态资源使用如下: <Window
任何人都知道如何在共享/静态函数中动态加载控件?该函数本身位于 mustinherit/abstract 类中。 (这是 VB 中的 ASP.NET 项目)我想做这样的事情: VB: Publ
在我看来,静态/强类型编程语言最宝贵的一点是它有助于重构:如果/当您更改任何 API,那么编译器会告诉您该更改破坏了什么。 我可以想象用运行时/弱类型语言编写代码......但我无法想象没有编译器的帮
正如我的名字所暗示的,我是一名 .NET 开发人员,但我对 Java 的兴趣越来越大,并且我有兴趣学习更多其他语言,因为这有助于我学习更多关于编程的知识。 无论如何,我的问题是:不带参数/不使用状态的
我在java中使用WireMock来 stub POST请求。该请求返回一个存储在我本地的 json 正文文件。 stub 看起来像这样: wireMockServer.stubFor(get(url
Python 是否有类构造函数的机制,即每当首次引用类时(而不是创建该对象的实例时)调用的函数?我知道其他一些语言中也存在这种情况,但我还没有在 Python 中遇到过。 基本上,我想初始化该函数中的
Python 是否有类构造函数的机制,即每当首次引用类时(而不是创建该对象的实例时)调用的函数?我知道其他一些语言中也存在这种情况,但我还没有在 Python 中遇到过。 基本上,我想初始化该函数中的
这个问题已经有答案了: What is the difference between dynamic and static polymorphism in Java? (14 个回答) 已关闭 4 年
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Static initializer in Java 我想知道这个静态的东西(抱歉,这是我第一次遇到这个)对一个类有
如果c++应用程序是按以下方式组织的 //file1.cpp static Y sgObj = X::getInitObject(0); //declared in file scope //fil
我有一个抽象类(AvergedDataRecord),我需要进一步抽象(DataRecord),这样我就可以将它扩展到原始类和一个新的具体类(SummedDataRecord),并且我在获取某些方法时
我正在尝试制作一个字符串枚举。这是我到目前为止所得到的, private class TypedEnum : IEnumerable { public IEnumerator GetEnume
我选修了一门名为“安全代码”的类(class),在下一个作业中,我们应该对一些 C 文件和 JavaEE Web 项目进行静态/动态分析。 我检查了“源监视器”并在 C 文件上运行它,但是(除非我不知
我有两个类,一个是登录类,一个是用户类。在 loggedIn 类中,我想显示我在用户登录时所做的共享首选项。 loginPrefs = getSharedPreferences("loginprefe
我在同一个 Activity 中有两个静态 fragment ,在“fragmentA”中我有一个自定义列表,当一个项目被点击时必须在“fragmentB”中出现一个细节,细节只在我改变屏幕方向时出现
在 Java 中是未修改方法变量,缺少final,每次都重新初始化限定符 静态方法 实例方法 如果 1. 或 2.(或两者)的答案是 final 限定符允许 Java 执行优化并存储方法变量只有一次?
我有两个类相互交互。第一个是中心的,如下: public class Datenbank { double winkelPanel = 0; double groessePanel = 0; doub
我有一个 mysql 数据库,它连接基于 Web 的 php 应用程序和 FoxPro 应用程序(是的,foxpro)。在之前的“开发人员”被解雇后开始处理这个问题。 无论如何,我熟悉 AES_Enc
我是一名优秀的程序员,十分优秀!