C++引用<openssl/applink.c>出现类型转换错误的解决方法
报错根因
C标准强制要求不允许函数指针类型隐式转换为void*,你添加的extern "C"块仅会调整包裹内容的函数链接规则,不会修改C本身的强类型校验逻辑,所以直接在C++代码中引入applink.c时会触发该类类型转换报错。
解决方法
- 方法一:你已经找到的快速适配方案,直接在编译选项中添加
-fpermissive参数,该参数会放宽C++语法校验规则,允许上述隐式类型转换,可直接解决报错。 - 方法二:更规范的适配方案,无需修改全局编译规则:单独新建一个C语言源文件,仅在该C文件中引入
applink.c,再将该C文件与你的C++项目代码一同编译即可。C语言本身允许函数指针到void*的隐式转换,不会触发报错。
内容的提问来源于stack exchange,提问作者lanpesk
相关产品推荐
相关产品推荐

