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. >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>> >