小编And*_*rii的帖子

R:指向c函数的指针

如何将指向函数的指针从C代码传递给R(使用外部R)并在调用该函数后从R ??

就像是:

C:

typedef void (* FunctionPtr)();
SEXP ans;
PROTECT(ans = /* ?some code? */);
R_tryEval(ans, R_GlobalEnv, NULL);
UNPROTECT(1);
Run Code Online (Sandbox Code Playgroud)

R:

callback_function()
Run Code Online (Sandbox Code Playgroud)

编辑: @Romain Francois的帖子非常有帮助.
myapp代码:

namespace
{
    void callback()
    {
        std::cout << "callback\n" << std::flush;
    }
}
class Worker
{
public:
/*...*/
    void initialize(argc, argv)
    {
       Rf_initEmbeddedR(argc, argv);

        SEXP ans, val;
        typedef void (* FunctionPtr)();

        PROTECT(ans = Rf_lang2(Rf_install("source"), Rf_mkString("script.R")));
        R_tryEval(ans, R_GlobalEnv, NULL);
        UNPROTECT(1);

        PROTECT(val = Rf_ScalarInteger((int)(&callback)));
        /* pass the address of the pointer to a function */
        PROTECT(ans = …
Run Code Online (Sandbox Code Playgroud)

c++ pointers r rcpp

4
推荐指数
1
解决办法
1978
查看次数

标签 统计

c++ ×1

pointers ×1

r ×1

rcpp ×1