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();
> }