You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MultiversX Rust测试框架运行cargo test报cc链接失败如何修复

问题根因

这个undefined reference to 'main'链接错误和系统的cc编译器本身无关,是MultiversX Rust testing framework的测试目标编译时没有生成可执行程序要求的main入口函数,直接原因一般是测试宏未正确展开、编译配置错误两类。

排查&修复步骤
  • 检查测试文件配置
    所有放在tests/目录下的集成测试文件,头部必须正确引入框架的导入宏,该宏会自动生成测试运行需要的main入口,标准引入写法如下:
    use multiversx_sc_scenario::*;
    
    // *缺失这行就不会自动生成main入口,是该错误的最高发诱因*
    multiversx_sc_scenario::imports!();
    
    注意不要手动在测试文件里自定义fn main() {},会和框架自动生成的入口冲突,触发重复定义错误。
  • 检查Cargo.toml配置
    • 确认multiversx-sc-scenario测试框架依赖放在[dev-dependencies]配置块下,不要放到普通运行时依赖[dependencies]中
    • 不要在[lib]、[[test]]配置块中手动指定crate-type为cdylib、staticlib等库类型,库类型编译目标不会生成main入口,会直接触发该链接错误;测试目标使用默认的可执行文件配置即可
    • 确认合约核心依赖multiversx-sc的版本和测试框架版本完全一致,版本不兼容会导致宏展开失败,无法生成入口
  • 清理编译缓存重试
    旧的错误编译缓存会导致配置修正后仍然报错,执行以下命令清理后重新运行测试:
    cargo clean
    cargo test
    
  • 工作空间项目额外检查
    如果是多包工作空间项目,确认根目录Cargo.toml的members列表已经包含测试所在的合约包,不要将测试目录加入exclude列表。

内容的提问来源于stack exchange,提问作者Fargerik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:57:27