我尝试在erlang中使用带有ei库的C代码。
我尝试用以下代码构建代码:
-I/usr/local/lib/erlang/erts-5.8.5/include/ -I/usr/local/lib/erlang/lib/erl_interface-3.7.5/include -O2 -g3 -Wall -c -fmessage-length=0
但是我得到的错误是ei功能未定义的参考。
我的简单代码:
int main(void) {
ei_x_buff result;
ei_x_encode_atom(&result, "ok");
return 0;
}
undefined reference to `ei_x_encode_atom'
我该如何解决?
谢谢。
答案 0 :(得分:1)
未定义的引用是链接器错误。这意味着您需要将代码与erl_interface库链接。
实际上你需要使用-L选项来指出erl_interface库的位置和-l选项来指定要链接的库。
有点
ld -L/usr/local/otp/lib/erl_interface-3.2.3/lib \
myprog.o -lerl_interface -lei -o myprog
(这是文档中的例子)