On Tue, Jul 19, 2016 at 8:00 PM, jqian via julia-users
<[email protected]> wrote:
>
> I am trying to call Julia from C++ shared library.  From the log, it seems
> the call to jl_eval_string("sqrt(2.0)") return correct value.
> The problem is that the function  CPPCallJulia::gssqrt( ) never return to
> caller ( If I remove Julia function, it works fine).

What do you get if you run it in gdb.

>
>
> g++ -c -W -O3 -m64 -fPIC CPPCallJulia.cpp  -I$JULIA_DIR/include/julia
> g++ -O3 -shared -m64 -WI  -fPIC -o./libCPPCallJulia.so CPPCallJulia.o
> -L$JULIA_DIR/lib/julia -lm -ljulia
>
>
> Thanks for the help.
> Jason
> string CPPCallJulia::gssqrt(const vector<string> & args)
> {
>     ofstream f("/home/ju_log.txt",ios::out);
>     stringstream s;
>     double result=1000;
>
>     jl_init("/home/Julia/julia-2e358ce975/bin");
>         jl_value_t *ret = (jl_value_t*)jl_eval_string("sqrt(2.0)");
>         if (jl_is_float64(ret)) {
>                 result = jl_unbox_float64(ret);
>         }
>
> jl_atexit_hook(0);

FYI, you will never able to reinitialize julia again without restart
your process after this call..

>
>     s << result;
>
>       if(f.is_open()){
>            f<<"=== result ";
>            f<<s.str();
>            f.close();
>       }
>     return s.str();
> }

Reply via email to