erl5.7.4下win32使用vc编译erlang扩展(nif)步骤
1、VC下新建"Dynamic-link Library" 工程
2、新建"test_nif.c",内容如下:
- #include "erl_nif.h"
- static ERL_NIF_TERM hello(ErlNifEnv* env)
- {
- return enif_make_string(env, "Hello world!");
- }
- static ErlNifFunc nif_funcs[] =
- {
- {"hello", 0, hello}
- };
- ERL_NIF_INIT(niftest,nif_funcs,NULL,NULL,NULL,NULL)
复制代码
3、拷贝 erl5.7.4erts-5.7.4include 下的erl_nif.h、erl_nif_api_funcs.h到工程目录下
4、编译生成niftest.dll
5、在niftest.dll目录内新建erl测试脚本,代码如下:
- -module(niftest).
- -export([init/0, hello/0]).
- init() ->
- ok=erlang:load_nif("./niftest", 0), true.
- hello() ->
- "NIF library not loaded".
复制代码
6、测试结果:
1> c('niftest').
{ok,niftest}
2> niftest:init().
true
3> niftest:hello().
"Hello world!"
至此所有工作完成。
[ 本帖最后由 bs 于 2009-11-30 11:53 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
官方就有
http://www.erlang.org/doc/man/erl_nif.html
您好,请问有没有有关Erlang的nif的使用的讲解资料呢?
很想用nif的功能,但是不是很了解