2012-01-19 34 views
0

我嘗試在ei庫中使用erlang中的C代碼。Erlang ei_decode_version和其他函數未定義的參考

我嘗試建立我的代碼:

-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' 

我怎樣才能解決這個問題?

謝謝。

回答

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 

(它是從例如文檔)