3

我正在使用 NIF 进行 C-Erlang 集成,但在初始化 aBinary并添加指向其数据的 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.

enif_make_string与 binary.data 一起使用,我在 Erlang 上得到了一个字符串。但是当我尝试使用enif_make_binary二进制文件时,我得到了这样的<<0,0,0,0,0,0,0,0,112,40,129,20>>东西我需要做什么来转换?

4

2 回答 2

0

您为对象分配内存output_binaryoutput_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");
于 2012-03-01T18:33:37.180 回答
0

才发现问题。

我应该返回二进制而不是二进制的地址,所以只是return enif_make_binary(env, &output_binary);让它工作。

于 2012-03-02T17:55:38.570 回答