Thank you.  This just saved my day.  Can someone please put this intro in 
the documentation?

On Tuesday, June 30, 2015 at 11:58:18 PM UTC+8, Isaiah wrote:
>
> try
>
> jl_value_t * mod = (jl_value_t*)jl_eval_string("mymodule");
> jl_function_t * func = jl_get_function((jl_module_t*)mod,"myfunction");
>
> (jl_new_module creates a new module -- that's not what you want, because 
> the module containing your function is created when you eval "yourfile.jl")
>
> On Tue, Jun 30, 2015 at 11:47 AM, Kostas Tavlaridis-Gyparakis <
> kostas.t...@gmail.com <javascript:>> wrote:
>
>> Ok, so first of all thanks a lot for all the help so far.
>> So, now I try to follow the instructions and I write the following three 
>> lines of code inside C++:
>>
>>  jl_load("mymodule.jl");
>>         jl_value_t * mod = jl_eval_string("mymodule");
>>         jl_function_t * func = 
>> jl_get_function(jl_new_module(mod),"myfunction");
>>
>> (the jl file and the module itself have the same name in this case 
>> mymodule)
>> But I do receive the following 2 errors when Eclipse compiles:
>>
>> 1) error: invalid conversion from ‘void*’ to ‘jl_value_t* {aka 
>> _jl_value_t*}’ [-fpermissive] (this is referring to  jl_value_t * mod = 
>> jl_eval_string("mymodule");)
>>
>> 2) error: cannot convert ‘jl_value_t* {aka _jl_value_t*}’ to ‘jl_sym_t* 
>> {aka _jl_sym_t*}’ for argument ‘1’ to ‘jl_module_t* 
>> jl_new_module(jl_sym_t*)’ (this referring to jl_function_t * func = 
>> jl_get_function(jl_new_module(mod),"myfunction");)
>>
>>
>> >No problem, no stupid questions. However, I would suggest that you might 
>> want to spend some time getting really familiar with Julia by itself, 
>> before trying to use the embedding API. It might save a lot of time in the 
>> long run.
>>
>> You are totally right on this, I am just trying first to check if it is 
>> doable to do some combinations between C++ in Eclipse and Julia (such as 
>> using functions written in
>> Julia inside a C++ routine etc), because I am planning to connect a 
>> large-scale C++ with Julia and before starting to studying Julia in full 
>> detail and start writing proper
>> code was thinking to do some small tests in connectivity between the two. 
>> But it turns out that I don't know some very basic things to finish this 
>> task.
>>
>>
>> On Tuesday, June 30, 2015 at 5:32:53 PM UTC+2, Isaiah wrote:
>>>
>>> Sorry but I am not sure what you mean and how to "*evaluate your .jl 
>>>> file defining the module first*"?
>>>
>>>
>>> Ok, say you have a file:
>>>
>>> ```
>>> module mymod
>>> function foo() ... end
>>> end
>>> ```
>>>
>>> At the Julia prompt you would do:
>>>
>>> julia> include("myfile.jl")
>>>
>>> And then you have the module `mymod` available in the global namespace. 
>>> In C you can do the equivalent with:
>>>
>>> `jl_load("myfile.jl")`
>>>
>>> I am really new to Julia so maybe the question sounds really stupid, 
>>>> sorry for that
>>>
>>>
>>> No problem, no stupid questions. However, I would suggest that you might 
>>> want to spend some time getting really familiar with Julia by itself, 
>>> before trying to use the embedding API. It might save a lot of time in the 
>>> long run.
>>>
>>> On Tue, Jun 30, 2015 at 10:54 AM, Kostas Tavlaridis-Gyparakis <
>>> kostas.t...@gmail.com> wrote:
>>>
>>>> Sorry but I am not sure what you mean and how to "*evaluate your .jl 
>>>> file defining the module first*"?
>>>> (I am really new to Julia so maybe the question sounds really stupid, 
>>>> sorry for that)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Tuesday, June 30, 2015 at 4:28:54 PM UTC+2, Isaiah wrote:
>>>>>
>>>>> `jl_new_module` creates a new module. You must evaluate your .jl file 
>>>>> defining the module first, then to get a reference to the module do:
>>>>>
>>>>> `jl_value_t* mod = jl_eval_string("MyModName");
>>>>>
>>>>> Then you can pass "mod" as the argument to `jl_get_function`.
>>>>>
>>>>> On Tue, Jun 30, 2015 at 10:16 AM, Kostas Tavlaridis-Gyparakis <
>>>>> kostas.t...@gmail.com> wrote:
>>>>>
>>>>>> Hello,
>>>>>> I am trying to write some function in Julia which I will be able to 
>>>>>> call inside my C++ projects in Eclipse.
>>>>>> In the documentation there is this 
>>>>>> <http://julia-demo.readthedocs.org/en/latest/manual/embedding.html#calling-julia-functions>
>>>>>>  
>>>>>> example on how to call a function of julia from an existing module.
>>>>>> So, what I have done was to create my own module where inside I 
>>>>>> included my function and then my
>>>>>> understanding is that I should be using "jl_new_module(jl_sym_t 
>>>>>> *name);" instead of jl_base_module.
>>>>>> But I am not sure (in case my assumption that this is the correct 
>>>>>> command is true) how to proper use
>>>>>> it's syntax, as what I am trying is:
>>>>>>
>>>>>>         jl_function_t * func = 
>>>>>> jl_get_function(jl_new_module(mymodule),"myfunction");
>>>>>>
>>>>>> and I tried instead of mymodule also mymodule.jl and "mymodule" and 
>>>>>> "mymodule.jl" and in all the attempts I
>>>>>> recieve an error that:
>>>>>>
>>>>>> mymodule  was not declared in this scope
>>>>>>
>>>>>>
>>>>>> Let me note beforehand that the module is being stored globaly as when I 
>>>>>> run julia on the terminal I can use it
>>>>>> through the comand using mymodule.
>>>>>> Still maybe I am trying to use the wrong command or sth, so if there is 
>>>>>> any suggestion I would be really greatful
>>>>>> to hear it.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>
>

Reply via email to