It's jl_eval_string located in jl_api.c in src.
so you would do
jl_value_t * func2 = jl_eval_string("DSP.hanning")
The best way to play around with Julia's c-api is within julia itself.
julia> pkg_ptr = ccall(:jl_eval_string, Ptr{Void}, (Ptr{Cchar},),
"Base.Pkg.clone")
Ptr{Void} @0x00007fd11c1754a0
julia> unsafe_pointer_to_objref(ans)
clone (generic function with 2 methods)
julia> typeof(ans)
Function
That way you can prototype what you want much more easily.
On Friday, September 5, 2014 9:32:43 AM UTC-4, Einar Otnes wrote:
>
> Thank you for your help on this. It seems that the 'jl_eval_global_var'
> function is local as I got the error "undefined reference to
> `jl_eval_global_var'" when linking. I replaced
> your suggestion with:
>
> jl_module_t* jl_dsp_module = (jl_module_t*)
> jl_get_binding(jl_main_module, jl_symbol("DSP"));
> jl_function_t* func2 = jl_get_function(jl_dsp_module,"hanning");
>
> This compiles OK, but I get a "segfault (core dumped)" when running the
> line with 'jl_get_function' .
>
> Any ideas or thoughts?
>
> Thanks,
>
> Einar
>
>
>
>
>
>
>
>
> On Fri, Sep 5, 2014 at 11:15 AM, Ivar Nesje <[email protected]
> <javascript:>> wrote:
>
>> I would guess that something like
>>
>> module = jl_eval_global_var
>> <https://github.com/JuliaLang/julia/blob/6277015ee3d46f20149136d092525bec95b6e29d/src/julia.h#L917>
>> (jl_main_module, jl_sym
>> <https://github.com/JuliaLang/julia/blob/6277015ee3d46f20149136d092525bec95b6e29d/src/julia.h#L666>
>> ("MyModule"))
>>
>> would work, but I don't have the required testing setup to see if it
>> actually works. (Where is my C REPL?) The embedding API has not gotten much
>> attention (yet), so it is mostly documented in source, and it is likely
>> that there will be some adjustments.
>>
>>
>> On Friday, September 5, 2014 10:09:03 AM UTC+2, Einar Otnes wrote:
>>>
>>> Sorry, I'm a bit slow. How do I look up a binding for a specific module?
>>> In other words, how would I explicitly get to call the "fftfreq" function
>>> in the "DSP" module from C/C++?
>>>
>>> Is this this documented anywhere in Julia docs?
>>>
>>> Thanks,
>>> Einar
>>>
>>>
>>>
>>> On Wednesday, September 3, 2014 3:10:59 PM UTC+2, Isaiah wrote:
>>>>
>>>> If you have defined a module already (by eval'ing julia code?) then you
>>>> can look up the binding and cast that to a jl_module_t.
>>>> On Sep 3, 2014 8:14 AM, "Einar Otnes" <[email protected]> wrote:
>>>>
>>>>> Dear experts,
>>>>>
>>>>> I've looking at the documentation " Embedding Julia" (
>>>>> http://julia.readthedocs.org/en/latest/manual/embedding/) to figure
>>>>> out how I can call my own julia functions from within C, and I'm
>>>>> struggling
>>>>> to figure out how I should define the jl_module_t that corresponds the
>>>>> module I've defined. The examples show that there is an instance of
>>>>> jl_module_t, "jl_base_module", that you need to provide to be able to
>>>>> call a function defined in the base module. How do I define a
>>>>> corresponding
>>>>> jl_module_t type for the modules that are defined outside of standard
>>>>> julia, e.g. for the external packages or the modules I have created
>>>>> myself?
>>>>>
>>>>> Thanks for your help.
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Einar Otnes
>>>>>
>>>>>
>