Встраивание Юлии в C ++ - PullRequest
       8

Встраивание Юлии в C ++

0 голосов
/ 06 ноября 2018

Я пытаюсь встроить Джулию, как объяснено в документации (https://docs.julialang.org/en/v1/manual/embedding/index.html), но не могу заставить ее работать с символами. Возможно, мне не хватает чего-то простого.

Когда я запускаю следующий код

jl_function_t *func = jl_get_function(jl_base_module, "uppercase");
char const *julia = "julia";
jl_value_t *argument = jl_box_char(*julia);
jl_value_t *ret = jl_call1(func, argument);
const char *unboxed = jl_string_ptr(ret);
// expecting "JULIA", getting an empty string

переменная unboxed возвращается пустой. jl_box_char, кажется, ожидает указатель, так как его аргумент должен uint32_t (https://github.com/JuliaLang/julia/blob/24f1316e91de029f71f636db23aced49156b44ad/src/julia.h#L1182).

Обратите внимание, что символы правильно распаковываются при вызове:

jl_value_t *ret = jl_eval_string("uppercase(\"julia\")");
const char *unboxed = jl_string_ptr(ret);

Есть идеи? Спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018

Ответ найден @molbdnilo. Следующие работы:

jl_function_t *func = jl_get_function(jl_base_module, "uppercase");
char const *julia = "julia";
jl_value_t *argument = jl_cstr_to_string(julia);
jl_value_t *ret = jl_call1(func, argument);    
const char *unboxed = jl_string_ptr(ret); // expecting "JULIA", getting "JULIA"
...