未定义的符号_EVP_PKEY_CTX_new_id
Undefined symbols _EVP_PKEY_CTX_new_id
我有这个C++代码,它不能在OS X上编译:
#include <iostream>
#include <openssl/evp.h>
int main(int argc,char *argv[]){
EVP_PKEY_CTX *pctx;
pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, NULL);
return 0;
}
在链接我得到这个错误:
Undefined symbols for architecture x86_64:
"_EVP_PKEY_CTX_new_id", referenced from:
_main in test-a22ea1.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
编译使用:
g++ test.cpp -o test -lssl -lcrypto
OpenSSl-doc说,它应该被定义:https://www.openssl.org/docs/manmaster/crypto/EVP_PKEY_CTX_new.html
这段代码在Linux(Debian 7和OpenSSL 1.0.1e)上运行得很好。但在OS X上不行。有什么建议吗?
我的配置:
- OS X:10.11.2
- clang:Apple LLVM版本7.0.2(clang-7001.81)
- openSSL:openSSL 1.0.2e 2015年12月3日(与Homebrew一起安装)
感谢并祝你新年快乐:)
链接器是否正在获取系统上已安装的ssl
和crypto
库文件的另一个版本?尝试添加-L开关和自制安装文件的路径。
相关文章:
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 重载运算符new[]的行为取决于析构函数
- 过载'operator new'如何导致无限循环?
- 创建具有 new in 函数和"this is nullptr"异常的对象
- Codelite C++ new project
- 在类c++中使用new声明数组
- g++用户定义的动态链接库上的全局new和delete运算符
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- 在将 new 与指针一起使用时,创建数组的指定长度
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- 为什么我的全局 new() 覆盖被绕过了?
- 声明C++数组(带或不带 "new" 关键字)
- 在C++中,如果我可以直接将整数分配给指针而不使用"new",为什么要使用"new"?
- 是否可以使用 new 指定具有宏常量的动态分配数组的元素?
- constexpr new 如何分配内存?
- 放置 new 和 uninitialized_fill() 的行为
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- different between int **arr =new int [ n]; and int a[i][j]?
- 为什么 std::make_shared 无法编译带有已删除运算符 new 的类型?