我正在使用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_string
与binary.data,我在Erlang上得到一个字符串。但是,当我尝试将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");
关于c - 通过NIF创建指向带有char *数据的Erlang二进制文件*,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9521854/