【发布时间】:2019-09-26 12:55:14
【问题描述】:
我正在使用我们产品代码中的第三方代码(openssl)。在编译代码时,我收到了可以在 Linux (gcc/g++) 中使用 -fpermissive 标志将其抑制为警告的错误。在 Windows 中,我在 Visual Studio (2005) 中遇到了相同的编译错误。想知道可以在 Visual Studio 中使用的 -fpermissive 标志的替代方案来抑制错误。
我尝试在模块属性->C/C++->命令行->附加选项中添加'/fpermissive'、'/Ze'等标志。但这并没有解决问题。
得到如下错误。 ssl/packet_locl.h(429) : error C2440: '=' : cannot convert from 'void *' to 'unsigned char 'Conversion from 'void' to pointer to non-'void' 需要一个显式转换
由于第三方代码出错,我们不能在那里进行任何代码更改。
预期结果:我们需要将此错误抑制为警告,然后继续编译成功。
【问题讨论】:
-
TL;博士:No, you can't just disable hard errors.。您是否使用 C++ 编译器编译 C 代码?如果是这样,则可以解决整个问题(但不能通过抑制错误)。
-
嗨 Max,是的,我正在用 C 代码 (Openssl) 编译 C++ 代码。您能告诉我如何解决这个问题吗?
-
那么解决方案是将所有 openssl 内容包装在一个 C 库中,然后使用 C 编译器进行编译。然后,您的 C++ 代码与此包装库(其标头 不 可传递地包括
ssl/packet_locl.h等)交互。这可能已经由其他人完成(您肯定不是第一个将 openssl 与 C++ 代码一起使用的人),因此您应该寻找这样的 openssl 的 C++ 绑定。