如何将指向函数的指针从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)