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

Windows10系统构建Rcpp包出现R_init_Auxilio重复定义编译错误求助

错误原因

报错核心是R_init_Auxilio函数重复定义,根因如下:

  • 执行compileAttributes()时,Rcpp会自动在src/RcppExports.cpp中生成原生 routine 注册的入口函数R_init_Auxilio
  • 后续手动调用tools::package_native_routine_registration_skeleton()生成了src/init.c文件,该文件中也定义了同名的R_init_Auxilio函数,链接时两个同名函数冲突导致编译失败

解决方法

按以下步骤操作即可解决:

  1. 直接删除src目录下的init.c文件,使用Rcpp开发的包不需要手动生成原生函数注册文件,Rcpp已经自动处理了相关逻辑
  2. 清理残留的临时构建文件:删除包目录下的src/RcppExports.cpp、src/RcppExports.h、以及之前构建生成的Auxilio_1.0.tar.gz等临时文件
  3. 重新执行如下流程:
library(Rcpp)
compileAttributes("Auxilio", verbose=TRUE)
library(devtools)
build("Auxilio")
install("Auxilio")

补充注意事项

  • tools::package_native_routine_registration_skeleton仅用于非Rcpp开发的原生包手动注册函数场景,Rcpp开发的包不需要调用该函数
  • 你的代码中调用了rhalfnorm函数,如果该函数来自第三方R包,需要在DESCRIPTION文件的Imports字段添加对应包名,同时在NAMESPACE中添加对应导入声明,避免运行时报找不到函数的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:39:00