C++Builder 10.4/11编译64位程序报altsvc.o无效对象文件错误求助
报错触发原因
- 该问题是C++Builder 10.4、11两个版本的已知原生缺陷:官方预置的64位CLANG版本libcurl静态库中,
altsvc.o被错误编译为32位目标格式,与64位项目的链接目标架构不兼容,因此在链接阶段会抛出无效对象文件的错误提示。 altsvc是HTTP Alternative Services协议的实现模块,属于libcurl第三方库的组成部分,并非你项目的自有代码模块,因此你在自有源码目录、项目配置文件、官方公开的源码路径中都无法检索到对应的altsvc.cpp源文件。
可行解决方案
- 自行编译适配的libcurl库:使用对应版本的CBuilder 64位CLANG编译器,编译匹配版本的libcurl源码,将生成的全部.o静态库文件替换到CBuilder安装目录下的64位libcurl库文件夹中,覆盖掉错误的32位
altsvc.o文件即可。 - 跳过libcurl库链接:如果你的项目没有用到任何libcurl相关的网络功能,可以打开项目配置页,进入「链接器-输入」设置,在「忽略特定默认库」列表中添加libcurl对应的库文件名,强制链接器跳过该库的加载即可消除报错。
- 升级IDE版本:该缺陷已经在C++Builder 11.1及之后的版本补丁中修复,升级到对应版本后重新编译项目即可直接解决问题。
内容的提问来源于stack exchange,提问作者Andrew Bond
相关产品推荐
相关产品推荐

