gpt4 book ai didi

使用指向 char * 的数据通过 NIF 创建 Erlang 二进制文件

转载 作者:行者123 更新时间:2023-12-02 05:07:28 33 4
gpt4 key购买 nike

我正在使用 NIF 进行 C-Erlang 集成,但在初始化 Binary 时遇到了一些问题并添加 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);

关于我做错了什么有什么想法吗?我遇到了段错误。

更新:我摆脱了段错误。但现在我无法返回包含 String 的 Erlang 二进制文件.

使用 enif_make_stringbinary.data我得到一个String在二郎。但是当我尝试使用 enif_make_binary使用二进制文件,我得到这样的东西 <<0,0,0,0,0,0,0,0,112,40,129,20>>我需要做什么才能转换?

最佳答案

您为 output_binary 对象分配内存,但 output_binary->data 指向无效对象。您可以通过这种方式为 output_binary->data 分配内存:

output_binary->data = malloc(sizeof "Here is a string");  // or enif_alloc
strcpy(output_binary->data, "Here is a string");

关于使用指向 char * 的数据通过 NIF 创建 Erlang 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521854/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com