Я занимаюсь интеграцией C-Erlang с использованием NIF, и у меня возникли проблемы с инициализацией Binary
и добавлением символа *, указывающего на его данные.Создание двоичного файла Erlang через NIF с данными, указывающими на char *
Я делаю это так:
ErlNifBinary *output_binary;
enif_alloc_binary(500, output_binary);
strcpy(output_binary->data, "Here is a string");
return enif_make_binary(env, output_binary);
Любые идеи о том, что я не делаю правильно? Я получаю ошибку сегментации.
ОБНОВЛЕНИЕ: Я избавляюсь от ошибки сегментации. Но теперь я не могу вернуть двоичный файл Erlang, содержащий String
.
Использование enif_make_string
с binary.data Я получаю строку на Erlang. Но когда я пытаюсь использовать enif_make_binary
с двоичным, я получаю такие вещи <<0,0,0,0,0,0,0,0,112,40,129,20>>
, что мне нужно сделать, чтобы конвертировать?
Спасибо за ваш ответ, но он здесь не работает. Я все еще получаю ошибку сегментации. –
Вам также нужно установить 'output_binary-> size' в' sizeof '. Вот строка «'. – ouah
Спасибо. Это сработало, но я не смог получить двоичный файл Erlang со строкой. (Я обновил вопрос) –