LLVM 19编译报错:ExecutorSymbolDef构造函数不匹配问题排查
错误原因
LLVM 19对ORC JIT模块的API进行了不兼容的破坏性更新:llvm::orc::ExecutorSymbolDef的构造函数不再支持直接传入llvm::JITEvaluatedSymbol对象作为参数。在LLVM 15中两者的类型转换是隐式兼容的,但LLVM 19重构了这部分接口逻辑,要求开发者显式完成符号对象的转换,因此直接传递JITEvaluatedSymbol会触发无匹配构造函数的编译错误。
修改方案
需要修改的文件是**llvm_jit_context.cpp**,具体为第319行和第340行:
- 将原代码中直接用
JITEvaluatedSymbol构造ExecutorSymbolDef的写法,替换为LLVM 19提供的显式转换方法ExecutorSymbolDef::from()。 - 代码修改示例:
原LLVM 15兼容代码:
修改为LLVM 19兼容代码:ExecutorSymbolDef symbol_def(evaluated_symbol);ExecutorSymbolDef symbol_def = ExecutorSymbolDef::from(evaluated_symbol);
内容的提问来源于stack exchange,提问作者NobinPegasus
相关产品推荐
相关产品推荐

