gpt4 book ai didi

c++ - 从 C++ 调用以 Julia 回调函数作为参数的 Julia 函数

转载 作者:行者123 更新时间:2023-11-30 05:25:42 24 4
gpt4 key购买 nike

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

任何人都可以向我提供一个如何执行此操作的示例吗? embedded Julia example很好,但似乎并不能说明这种情况。

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

最佳答案

示例涵盖了这种情况。

这里我们调用一个c函数:

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

在示例的顶部定义。

在别处有一个定义 julia 函数的例子。定义一个在您的 C 代码中执行 ccall 的代码。

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

(除了 2*x 它执行 ccall(blah))。

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

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

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

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

关于c++ - 从 C++ 调用以 Julia 回调函数作为参数的 Julia 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com