![](/img/trans.png)
[英]Using C++ function as an argument in another C++ function in R package "Rcpp"
[英]R package with c++ (without Rcpp)
我試圖在不使用Rcpp的情況下使用c ++構建R包(我知道Rcpp的運行非常出色)。 我已經閱讀了一些R包教程,並簡要閱讀了編寫R擴展。 下面的示例1)正在運行,但是示例2)使R崩潰。我想知道為什么會這樣(是否有任何必要的步驟為R等編寫函數...?)。
在.cpp
文件中
extern "C" {
SEXP add(SEXP a, SEXP b) {
SEXP result = PROTECT(allocVector(REALSXP, 1));
REAL(result)[0] = asReal(a) + asReal(b);
UNPROTECT(1);
return result;
}
}
致電R:
.Call("add", 3.0, 2.0).
這個例子有效。
在.cpp
文件中:
extern "C" {
void RHello() {
Rprintf("Hello.\n");
R_FlushConsole();
R_ProcessEvents();
}
}
致電R:
.Call("RHello").
這使R崩潰。
在第二種情況下,該函數的簽名是錯誤的(沒有返回值),它需要返回一個SEXP對象。 即使那只是R_NilValue。
希望您有充分的理由不使用Rcpp。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.