文档章节

linux下一个简单的go通过c调lua的例子

徐学良
 徐学良
发布于 2015/12/31 10:36
字数 134
阅读 43
收藏 0

首先需要自己现在linux下配置好go和lua环境

clua.lua

function add(x,y)
       return x + y
end


glua.go

package main
/*
#cgo pkg-config: lua5.1
#cgo luaa LDFLAGS: -llua -lm -ldl
#include <stdio.h>
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

lua_State* L;
int luaadd(int x, int y)
{
        int sum;
        lua_getglobal(L,"add");
        lua_pushnumber(L, x);
        lua_pushnumber(L, y);
        lua_call(L, 2, 1);
        sum = (int)lua_tonumber(L, -1);
        lua_pop(L,1);
        return sum;
}

int call()
{
        int sum;
        L = lua_open();
        luaL_openlibs(L);
        luaL_dofile(L, "clua.lua");
        sum = luaadd(10, 2);
        lua_close(L);
        return sum;
}
*/
import "C"
import "fmt"

func main() {
    fmt.Println(C.call())
}

然后直接go run golua.go就可以了

© 著作权归作者所有

共有 人打赏支持
徐学良
粉丝 22
博文 213
码字总数 13841
作品 0
浦东
程序员
Step By Step(Lua调用C函数)

Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于...

扶殊88
2013/10/22
0
2
libcoro:在c++中支持coroutine

起因 在第一个版本的libtnet开发完成之后,我一直在思考如何让异步方式的网络编程更加简单。 虽然libtnet通过c++ sharedptr以及function等技术很大程度上面解决了异步代码编写的一些问题,但...

siddontang
2014/05/11
0
0
Lua 协程coroutine

  协程和一般多线程的区别是,一般多线程由系统决定该哪个线程执行,是抢占式的,而协程是由每个线程自己决定自己什么时候不执行,并把执行权主动交给下一个线程。 协程是用户空间线程,操...

jeffjade
2014/11/24
0
0
Lua 在移动平台上的应用——Lua 嵌入实践

现如今,移动应用程序被应用的越来越宽泛,程序越来越复杂,跨平台开发也显得越来越重要。针对各自的平台做原生开发无疑是重复制造轮子,那么有没有什么可以让已造好的轮子进行复用呢? Lua ...

_shieh
2016/01/07
103
0
linux mysql proxy 的安装,配置,以及读写分离

linux mysql proxy 的安装,配置,以及读写分离 张映 发表于 2010-03-03 分类目录: mysql 一,mysql proxy是什么,干什么用的 MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy...

daniel-john
2014/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

设计模式:简单工厂模式(静态共产方法模式)

简单工厂的构成包括三个角色: 1)抽象产品类 2)具体产品类(继承抽闲产品类) 3)工厂类(生产具体产品) 具体代码实现 1、抽象产品类 /** * 抽象类 */public abstract class Car ...

京一
8分钟前
0
0
Lombok使用

1 介绍 Lombok是一个简单的Java库,改工具可以通过注解自动地提供一些方法,简化开发。比如编写POJO时需要为每个属性提供getter()方法和setter()方法,这就可以使用Lombok实现。 2 配置 Lomb...

SuperHeroes
16分钟前
0
0
Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
18分钟前
0
0
java虚拟机之内存模型

1. 概述 对于从事 C、C++ 程序开发的人员来说,在内存管理领域,他们既是拥有最高权力的「皇帝」又是从事基础工作的「劳动人民」 --- 既拥有每个对象的「所有权」,又担负着每一个对象生命开...

firepation
21分钟前
0
0
解决linux的-bash: ./xx: Permission denied

解决linux的-bash: ./xx: Permission denied 在linux下执行sh文件时提示下面信息: -bash: ./xx.sh: Permission denied解决:chmod 777 xx.sh 1 2 3 4 Linux chmod +755和chmod +777 ......

DemonsI
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部