使用Rcpp编写C++函数时出现找不到main函数的报错求助
问题原因及解决方法
为什么找不到main()函数?
- Rcpp仅会将带有
// [[Rcpp::export]]标记的C++函数暴露给R,你的main()函数没有添加该标记,因此R无法识别它。 - 更核心的是:在Rcpp的工作逻辑里,不需要编写
main()函数。R本身就是运行的主进程,我们只需要导出要在R中调用的功能函数即可,无需像独立C++程序那样定义入口点main()。
修正后的代码
#include <Rcpp.h> // [[Rcpp::export]] int addition(int a, int b) { int r = a + b; return r; } /*** R # 直接调用导出的addition函数 result <- addition(3, 5) cat("The result is", result, "\n") */
关键修改说明
- 移除了不必要的
<iostream>头文件和using namespace std,因为我们不需要用cout输出结果,而是将计算结果返回给R处理。 - 删除了
main()函数,改用R代码直接调用导出的addition函数完成测试。 - 简化了
addition函数的变量初始化写法,让代码更简洁。
修改后运行sourceCpp()即可正常执行,R会调用addition(3,5)并输出计算结果。
内容的提问来源于stack exchange,提问作者Alison
相关产品推荐
相关产品推荐

