从C ++调用Julia函数,该函数将Julia回调函数作为参数

时间:2016-07-01 01:36:12

标签: c++ julia

我想从C ++调用Julia函数。这个Julia函数将另一个Julia函数作为参数(回调函数)。我想完全用C ++编写这个回调函数,并将其直接传递给Julia,而不是在Julia的名称空间中声明它的名称,就像传递其他原始类型一样。据推测,回调函数的C ++实现的参数将以jl_value_t *作为其类型。

有人能为我提供一个如何做到这一点的例子吗? embedded Julia example非常好,但似乎没有说明这种情况。

更新:根据Yakk的回答进行修改和澄清。

1 个答案:

答案 0 :(得分:1)

这个例子涵盖了这种情况。

这里我们称之为c函数:

jl_eval_string("println( ccall( :my_c_sqrt, Float64, (Float64,), 2.0 )

这是在示例的顶部定义的。

在其他地方有一个定义朱莉娅功能的例子。定义一个在您的c代码中执行ccall的操作。

jl_eval_string("my_func(x) = 2*x");

(代替2*xccall(blah))。

获取julia函数,并获取指向它的指针(也在您的链接示例中)。

jl_function_t *func = jl_get_function(jl_base_module, "reverse!");

并将其传递给期望回调的julia函数。或者,使用eval按名称传递它。

C ++代码将通过此计划传递double等。