Delphi 10.1迁移至11后Jenkins编译出现E2597链接错误求助
Delphi 10.1迁移至11后Jenkins编译E2597错误的排查方向
- NDK版本不兼容:Delphi 11对Android NDK的版本要求比10.1高,你当前用的r18b版本过旧。Delphi 11官方推荐使用NDK r25c(或对应适配版本),老版本llvm-libc++的符号定义和新Delphi的编译链接逻辑不匹配,才会出现
std::__ndk1::ios_base::clear(unsigned int)未定义的问题。 - 编译配置未更新:检查Jenkins里的Delphi编译参数,确认Android目标平台的NDK路径是否切换到了Delphi 11要求的版本,而非沿用旧的r18b路径;同时核对ABI架构(如armeabi-v7a/arm64-v8a)等配置是否符合Delphi 11的标准。
- C++标准库链接配置错误:Delphi 11可能调整了默认的C++ STL链接方式,比如从静态链接改为动态链接,或者反之。打开项目的Android编译选项,确认C++标准库的选择(如
llvm-libc++)和链接模式是否与Delphi 11的默认设置一致。 - Jenkins工作空间缓存残留:Jenkins的工作目录可能留存了Delphi 10.1编译时生成的旧目标文件、库文件等缓存,导致新编译时混合了旧依赖。清理Jenkins工作空间,重新拉取代码后再编译。
- 第三方库适配问题:如果项目依赖了涉及C++桥接的第三方库,这些库可能还是基于旧NDK编译的,未适配Delphi 11。检查所有外部依赖库,确保它们是用Delphi 11兼容的NDK版本重新编译的。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

