嵌入julia时使用了调用ccall的函数,这引发了一个问题。

我想在C++中嵌入julia,我希望能获得一个jl_value_t*,它通过ccall来生成。

这表现在C++代码上为:

const char* f_define = "c(du, u, p, t) = ccall(:Robertson_System, Cvoid, (Ptr{Cdouble}, Ptr{Cdouble}, Cdouble), du, u, t)";
jl_value_t* f = jl_eval_string(f_define);

这里Robertson_System是在C++中已写好编译并成功链接的函数。对于我完整程序的测试表现出该语句有问题。然而,如果在julia中直接获得函数对象则没有问题,julia代码如下:

f = c(du, u, p, t) = ccall(:Robertson_System, Cvoid, (Ptr{Cdouble}, Ptr{Cdouble}, Cdouble), du, u, t);

这行代码成功获得了我想要的函数句柄。

我想知道C++中这段代码失败的原因,并且我应如何解决这个问题。

另外,添加正确的库地址后仍然失败。

备案号:京ICP备17009874号-2