Erlang:crypo的问题:sha()

Erlang:crypo的问题:sha(),erlang,Erlang,这在我的erlang shell中起作用: 1> U = default_user_name(). 2> crypto:start(). 3> crypto:sha(U). 4> crypto:stop(). 但当我编译这个时: default_pw() -> U = default_user_name(), crypto:start(), crypto:sha(U), crypto:stop(). 然后在erlang shell

这在我的erlang shell中起作用:

1> U = default_user_name().
2> crypto:start().
3> crypto:sha(U).
4> crypto:stop().
但当我编译这个时:

default_pw() ->
    U = default_user_name(),
    crypto:start(),
    crypto:sha(U),
    crypto:stop().
然后在erlang shell中执行,我得到:

1> person:default_pw()

**异常错误:参数错误

 in function  port_control/3

    called as port_control(crypto_drv04,5,<<"jDoe">>)

 in call from crypto:control/2
功能端口控制/3中的

称为端口控制(加密drv04,5,)
来自加密的呼叫中:控制/2
两个问题:

1) 我做错了什么

2) 似乎我需要启动和停止加密服务器。但是在我的应用程序中有更好的开始和停止它的地方吗

非常感谢,


LRP

您收到的错误表明加密应用程序未启动。启动它的一个简单方法是将其作为参数添加到
erl
中,如下所示:

$ erl -s crypto
我查看了加密的当前实现和erlang过去的发行说明,得出了以下结论(如果我错了,请有人纠正我):

  • Erlang releases=14A不需要启动加密,因为实现现在使用NIFs。这是有意义的,因为crypto_server.erl的当前实现只是一个
    gen_server
    模板,在14B03上,我不需要启动应用程序就可以使
    crypto:sha/1
    工作

  • 您收到的错误表明加密应用程序未启动。启动它的一个简单方法是将其作为参数添加到
    erl
    中,如下所示:

    $ erl -s crypto
    
    我查看了加密的当前实现和erlang过去的发行说明,得出了以下结论(如果我错了,请有人纠正我):

  • Erlang releases=14A不需要启动加密,因为实现现在使用NIFs。这是有意义的,因为crypto_server.erl的当前实现只是一个
    gen_server
    模板,在14B03上,我不需要启动应用程序就可以使
    crypto:sha/1
    工作