1

C プログラムでerl_interfaceを使用する必要があります。Debian Wheezy には Erlang R15B01 があります。

私は次のことを行います(たとえば)。

// main.c
#include <ei.h>
#include <erl_interface.h>

int main() {
    erl_init(NULL,0);
    return 0;
}

それから私は言います:

cc -I/usr/lib/erlang/lib/erl_interface-3.7.7/include -L/usr/lib/erlang/lib/erl_interface-3.7.7/ -lei -lerl_interface -o prog main.c

-L として指定されたディレクトリには含まれlibei.aliberl_interface.aいますが、erl_init への参照を悪用するリンカは未定義です:undefined reference to erl_init

何が間違っている可能性がありますか?本当にくだらない質問ですみません。

4

1 に答える 1

2

GNU ツールチェーンの最新バージョンでは、シンボルが相互に依存するのと同じ順序でオブジェクト ファイルとライブラリを指定する必要があります。したがって、通常は次のようにライブラリ フラグを呼び出しの最後に配置する必要があります。

gcc -o prog main.c -L<libdir> -I<includedir> -lerl_interface -lei
于 2013-01-06T20:45:36.487 に答える