luajit笔记---编译成静态库以及FFI绑定宿主程序函数

本文介绍了如何将LuaJIT编译为静态库,并探讨了使用FFI绑定宿主程序函数的过程,揭示FFI绑定的本质是与导出符号相关。虽然在DLL中导出符号,但FFI仍无法直接绑定,除非是本程序的导出符号。此外,文章提到lua51.dll的函数在FFI中可用,但实现方式不详,反映出LuaJIT相关资料的匮乏。
摘要由CSDN通过智能技术生成

本以为可以像lua一样把代码丢进去直接编译就好了,结果发现luajit有一堆汇编代码,不知道怎么处理,后来一搜索才知道luajit本身提高的批处理也可以编译成静态库,就是在后面加个static,郁闷到了。http://blog.csdn.net/whitehack/article/details/6451293


Google来Google,终于看到用FFI绑定宿主程序函数的例子,卧槽,知道真相我的眼泪都流下来!原来FFI本质是绑定导出的符号,所以说只要导出符号就可以用,吐血。

#include <lua.hpp>

#include <cassert>

// Please note that despite the fact that we build this code as a regular
// executable (exe), we still use __declspec(dllexport) to export
// symbols. Without doing that FFI wouldn't be able to locate them!

extern "C" 
{
	__declspec(dllexport) void __cdecl hello_from_lua(const char *msg)
	{
		printf("A message from LUA: %s\n", msg);
	}
	__declspec(dllexport) int  Add(int a,int b)
	{
		return a+b;
	}
}

const char *lua_code =
"local ffi = require('ffi')                   \n"
"ffi.cdef[[             
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值