lua调用dll 编译lfs

From:http://blog.csdn.net/snlscript/article/details/16340653

#include <Windows.h>

extern "C"{
#include <lua.h>
#include <lauxlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <lualib.h>
#include <math.h>
}

static int mysin (lua_State *L)
{
double d = luaL_checknumber(L, 1);
lua_pushnumber(L, sin(d));
return 1;
}

static int l_printf(lua_State *L)
{
const char * pPattern = luaL_checkstring(L, 1);
const char * str = luaL_checkstring(L, 2);
lua_pushnumber(L, printf(pPattern, str));
return 1;
}

static int l_MessageBox(lua_State *L)
{
const char * sTitle = luaL_checkstring(L, 1);
const char * sText = luaL_optstring(L, 2, "");
MessageBox(NULL, sTitle, sText, 0);
return 1;
}

static const struct luaL_Reg mylib[] =
{
{"mysin", mysin},
{"printf", l_printf},
{"messagebox", l_MessageBox},
{NULL, NULL}
};

extern "C" int __declspec(dllexport) luaopen_mylib(lua_State *L)
{
luaL_newlib(L, mylib);
return 1;
}

记得要在属性/连接器/输入/模块定义文件中输入def的文件名称如lfs.def,以及lua的lib(或dll?测试用的lib)

上面的代码中,最后export出去的函数是luaopen_mylib,一定要注意:函数名luaopen_mylib表明了最后输出的dll名称必须为mylib.dll,而且大小写要一致,否则lua无论如何都找不到luaopen_mylib函数的。

上面函数是cpp的,如果是c的最后一个函数格式会有变int luaopen_lfs (lua_State *L) {。。。具体参照luafilesystem的代码

lfs.def内容:

LIBRARY lfs.dll
VERSION 1.6
EXPORTS
luaopen_lfs

时间: 2024-11-15 11:19:48

lua调用dll 编译lfs的相关文章

lua调用dll demo

使用的是lua5.3 DllMain.cpp 1 //生成的dll 是 lua_add53.dll 2 //luaopen_lua_add 3 extern "C" { 4 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lua.h" 5 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lualib.h" 6 #include

LUA调用 Dll 添加收藏夹操作!!!IE Chrome

// AddFavorate.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include "atlbase.h" #include <iostream> #include <fstream> #include <string> #include "stdlib.h" #include

lua调用C++写的DLL实现“热更新”

原创作品,转载请注明来源是CSDN:http://blog.csdn.net/relar/article/details/38084689 开发游戏服务器往往有"热更新"的需求,就是在不停止服务程序的情况下,对服务程序进行升级.这里采用lua脚本桥接C++的模式.程序主框架用C++,程序的业务逻辑也是C++(具体的是C++写的DLL),这两者之间用LUA脚本语言进行桥接.当程序运行时,只要改变LUA脚本,即可以选择使用不同的DLL,以实现业务逻辑的升级更新. 上演示代码,代码分为三部分

lua调用cpp的DLL

首先新建一个cpp项目,命名为cppLibForLua,把lua的库引入,添加如下文件,编译成DLL GameHelp.h #ifdef GAME_HELP_API #define API __declspec(dllexport) #else #define API __declspec(dllimport) #endif extern "C" { API int fastPow(lua_State *L); API int luaopen_MyLuaDLL(lua_State* L

Lua与C++交互初探之Lua调用C++

Lua与C++交互初探之Lua调用C++ 上一篇我们已经成功将Lua的运行环境搭建了起来,也成功在C++里调用了Lua函数.今天我来讲解一下如何在Lua里调用C++函数. Lua作为一个轻量级脚本语言,他只包含了一些必要的系统库函数,当有需要时还得自己去写.有一次我要做一个两数异或的操作发现函数库里居然没有异或运算.不得不非常苦逼的自己去写.后来接触Lua深了之后才知道将这种"缺陷"可以由C函数来弥补.但要做到这一点对于一个对C只知道if else的学生来说确实还是有不少难度. 在学习

Lua 调用 Opencv 的方法

Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lua 调用 Opencv 呢? 查了 Torch 的官方文档,发现只有这么几个可以调用的包: 链接: https://github.com/torch/torch7/wiki/Cheatsheet 然后,你点击一个进去,发现有这么一个方法,可以安装对应的 Opencv 包:  然后,你就在终端里输入:

C++ 生成 dll 和调用 dll 的方法实例(转)

1)生成dll 建立两个文件 xxx.h , xxx.cpp xxx.h内容如下: #ifdef BUILD_XXX_DLL#define EXPORT __declspec(dllexport)#else#define EXPORT __declspec(dllimport)#endif extern "C"{EXPORT void example(void);... ...} xxx.cpp内容如下: #define BUILD_XXX_DLL#include "xxx.

?c++ 调用DLL函数,出现错误

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 错误原因

php调用dll经验小结

最近做一个网站,需要频繁使用远程数据,数据接口已经做好.在做转换的时候遇到了性能上的问题:开始打算用php来实现转换,苦苦查了数天,都没有找到直接操作字节的方法.虽然可以使用 pack() 方法将各个数据压入结构中,但是在解压的时候却不能通过 unpack() 简单的解出来,需要通过 //php code for( $i = 0; $i < $length; $i+=2 ){ $tempstr = $tempstr.chr( hexdec(substr($array["data"