备注:

   项目比较简单,主要是elixir 混合erlang 代码,elixir 调用erlang 模块方法
 
1. 初始化项目
 
mix  new  erlangelixirdemo

项目结构如下:

├── README.md
├── config
│   └── config.exs
├── lib
│   └── erlangelixirdemo.ex
├── mix.exs
└── test
├── erlangelixirdemo_test.exs
└── test_helper.exs
 
2. 添加erlang 支持
创建src 目录,并编写erlang code

项目结果如下:

├── README.md
├── config
│   └── config.exs
├── lib
│   └── erlangelixirdemo.ex
├── mix.exs
├── src
│   └── app.erl
└── test
├── erlangelixirdemo_test.exs
└── test_helper.exs src/app.erl 代码如下: -module(app).
%%API
-export([
login/0,
userlogin/0,
login/2,
userlogin/1
]).
-record(user, { name, age }).
login() ->
{ok,'dalongdemo'}. login(Name , Password) ->
{ok,'appdemo'}. userlogin()->
#user{name='dalongdemo',age=44}. userlogin(User)->
User.
 
3. elixir 调用erlang 模块方法
lib/erlangelixirdemo.ex 代码如下:

defmodule Erlangelixirdemo do
@moduledoc """
Documentation for Erlangelixirdemo.
"""
def call_erlang do
IO.inspect :app.userlogin()
end
end
 
4. 编译访问
 
iex  -S mix
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Compiling 1 file (.erl)
Compiling 1 file (.ex)
Generated erlangelixirdemo app
Interactive Elixir (1.6.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> E
Elixir Enum Enumerable
ErlangError Erlangelixirdemo Exception iex(1)> Erlang
ErlangError Erlangelixirdemo
iex(1)> Erlangelixirdemo.
MixProject call_erlang/0
iex(1)> Erlangelixirdemo.call_erlang
{:user, :dalongdemo, 44}
{:user, :dalongdemo, 44}
 
5. 说明
 
默认mix compile 的时候,对于erlang 代码是在src 目录进行编译的,同时可以在 mix.exs 修改

def project do
[
app: :appdemo,
version: "0.1.0",
elixir: "~> 1.6",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end 如下: def project do
[app: :my_app,
version: "0.0.1",
elixir: "~> 1.0",
erlc_paths: ["src"], # ADD THIS OPTION
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
 
6. 参考代码
https://github.com/rongfengliang/elixir-erlang
 
 
 
 

elixir 调用erlang 代码的更多相关文章

  1. [Erlang 0109] From Elixir to Erlang Code

    Elixir代码最终编译成为erlang代码,这个过程是怎样的?本文通过一个小测试做下探索.         编译一旦完成,你就看到了真相   Elixir代码组织方式一方面和Erlang一样才用非常 ...

  2. 如何实现 javascript “同步”调用 app 代码

    在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些 ...

  3. 1.JAVA中使用JNI调用C++代码学习笔记

    Java 之JNI编程1.什么是JNI? JNI:(Java Natibe Inetrface)缩写. 2.为什么要学习JNI?  Java 是跨平台的语言,但是在有些时候仍然是有需要调用本地代码 ( ...

  4. 股票数据调用示例代码php

    <!--?php // +---------------------------------------------------------------------- // | JuhePHP ...

  5. 在HTML标签<a/>中调用javascript代码

    <a/>标签的“href”属性可以是一个有效的URL,表示跳转的目的地,除此之外,href还可以是一段javascript代码.当为“href”设置javascript代码时,格式如下:& ...

  6. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...

  7. java调用python代码

    同样的我们需要安装jython,具体的步骤如下: 1. 去 http://sourceforge.net/projects/jython/ 下载最新的jython相关的jar包. 2. 下载下来的ja ...

  8. Matlab与C/C++联合编程之Matlab以MEX方式调用C代码(五)完整过程加示

    如下为本人亲证代码: 一: 编译器的安装与配置(环境不同,显示结果不同) 要使用MATLAB编译器,用户计算机上应用事先安装与MATLAB适配的以下任何一种ANSI C/C++编译器: 5.0.6.0 ...

  9. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

随机推荐

  1. python脚本10_打印斐波那契数列的第101项

    #打印斐波那契数列的第101项 a = 1 b = 1 for count in range(99): a,b = b,a+b else: print(b) 方法2: #打印斐波那契数列的第101项 ...

  2. 【error】: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

    错误描述如下: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) ...

  3. MySQL相关错误汇总

    Eroor 1 描述: 在启动mysql的时候出现如下问题:"ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' ...

  4. Access control allow origin 简单请求和复杂请求

    原文地址:http://blog.csdn.net/wangjun5159/article/details/49096445 错误信息: XMLHttpRequest cannot load http ...

  5. hdu3488

    题解: 首先把每一个点拆到两边 然后做KM求最大 吧没一条边相反即可 代码: #include<cstdio> #include<cmath> #include<algo ...

  6. zoj 2966 Build The Electric System(最小生成树)

    Build The Electric System Time Limit: 2 Seconds      Memory Limit: 65536 KB In last winter, there wa ...

  7. 一月收集几个有用的谷歌Chrome插件

    谷歌Chrome自推出以来已经从一个简单的浏览器演变成一个复杂的浏览器,这得益于根据浏览器写出的非常有用和强大的扩展.作为一名开发人员,我们关注的是网页设计和开发部分的那些插件对我们有帮助,几个比较熟 ...

  8. 20165210 《网络对抗技术》week1 exp0 kali安装与配置

    20165210 <网络对抗技术>week1 exp0 kali安装与配置 1. 安装过程: 从kali官网上下载如下图所示: 下载完成后打开VMware 点击创建新的虚拟机 弹出新虚拟机 ...

  9. c# 多线程调用窗体上的控件 示例

    private delegate void InvokeCallback(string msg); private void SetCountValue(string s) { if (this.fo ...

  10. 配置mysql 允许远程连接

    今天折腾了好常时间远程连接mysql ,在云服务器里面打开了3306端口,使用了service mysql status查看到mysql进程正常. netstat -anp | grep mysql ...