簡體   English   中英

具有C ++的R包(無Rcpp)

[英]R package with c++ (without Rcpp)

我試圖在不使用Rcpp的情況下使用c ++構建R包(我知道Rcpp的運行非常出色)。 我已經閱讀了一些R包教程,並簡要閱讀了編寫R擴展。 下面的示例1)正在運行,但是示例2)使R崩潰。我想知道為什么會這樣(是否有任何必要的步驟為R等編寫函數...?)。

例子1

.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).

這個例子有效。

例子2

.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM