2010-11-16 9 views
2

J'ai un module simple:simple Erlang

-module(dist). 
-compile([add/3]). 
add(From,X,Y) -> 
    From ! X+Y. 

Et je commence deux noeuds.

un avec

erl -sname foo 

et une autre avec

erl -sname bar 

Sur le nœud bar que je fais:

> c(dist). 
{ok,dist} 
> self(). 
<0.37.0> 
> spawn('[email protected]', dist, add, [self(), 3, 5]). 

Mais le Reponse que je reçois est:

Error in process <0.48.0> on node '[email protected]' with exit value: {undef,[{dist,add,[<8965.37.0>,3,5]}]} 

Que signifie cette erreur? Je me demandais si cela signifiait que mon noeud foo n'a pas ce module défini? Je ne pensais pas qu'il en avait besoin, mais le problème n'a pas été résolu en compilant dist dans le noeud foo donc je suppose que ce n'est pas le problème.

+2

Essayez exportation ajouter/3 – dsmith

+0

Ou utilisez -compile (export_all). (Seulement au début du développement) – Zed

+0

Il semble que je dois encore compiler le module dist dans les deux nœuds. Est-ce que c'est comme ça que ça marche? – MattyW

Répondre

7

Exporter l'ajout/3. Au lieu d'une option de compilation.

-export([add/3]). 
0

si dans le premier noeud que vous utilisez nl (module), le faisceau de ce module sera chargé à tous les noeuds connectés