WEB开发网
开发学院软件开发VC 将Lua嵌入到自己的程序中 阅读

将Lua嵌入到自己的程序中

 2009-02-05 20:00:45 来源:WEB开发网   
核心提示: 代码1. 首先要做的是创建含Lua的DLL2. 在工程里做如下链接: For sample:-// Library Linkage//-//-#if defined (_DEBUG)#pragma comment( lib, "lua.lib" ) // Lua Sup

代码

1. 首先要做的是创建含Lua的DLL

2. 在工程里做如下链接:

//
// For sample:
//
//---------------------------------------------
// Library Linkage
//---------------------------------------------
//-
#if defined (_DEBUG)
#pragma comment( lib, "lua.lib" ) // Lua Support
#else
#pragma comment( lib, "lua.lib" ) // Lua Support
#endif
//-

记得:要更改项目的属性Project Property -> linker -> general -> additional library directory

到lua lib所在目录。

3. 添加Lua包含文件:

extern "C"
{
#include "lua.h"
}

记得:要更改项目的属性 Project Property -> C/C++ -> general -> additional include directories

到lua include所在目录。

注意:lua lib里的所有文件保持"c"的扩展名,因为Lua采用ANSI C编写。

4. 现在我们需要按如下方式启动Lua VM

LRESULT OnCreate(UINT
/*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL&
/*bHandled*/)
{
//...
// Lua
//
lua_State *luaVM = lua_open(); /*
Open Lua */
//
luaopen_base(luaVM );   /* opens the
basic library */
luaopen_table(luaVM );  /* opens the table
library */
luaopen_io(luaVM );    /* opens
the I/O library */
luaopen_string(luaVM );  /* opens the string
lib. */
luaopen_math(luaVM );   /* opens the math lib.
*/
if (NULL ==
luaVM)
{
    
MessageBox("Error Initializing luan");
}
//...
// Do things with lua
code.
// see below
//...
lua_close(luaVM); /* Close Lua */
//
//
End
//...
}
5. 现在我们写Lua 和 C/C++ 结合的函数

Lua API函数可以这样写:lua_register(s, n, g)

这里:

s:是lua_State

n:暴露给Lua的函数名称

g: C/C++中的结合函数

请看下面例子:

//...
// Do things with
lua code.
lua_register( luaVM, "SetHome", l_SetHome );
//...
//
-------------------------------------------
//
#Lua Functions
//
------------------------------------------
//
static
int l_SetTitle( lua_State*
luaVM)
{
     const char*
title = luaL_checkstring(luaVM,
1);
    
theMainFrame->SetWindowText(title);
    
return 0;
}
6. 现在我们需要加载并执行Lua脚本//...
// Do things with lua
code.
lua_register( luaVM, "SetHome", l_SetHome );
//more glue
functions
lua_dofile(luaVM, "hrconf.lua");
//...
执行Lua API函数可以这样:lua_dofile(s, p)

这里:

s: 是lua_State

p: 是Lua脚本文件

为了完全理解Lua API,可以参考Lua 参考手册http://www.lua.org/manual/5.1/manual.html

上一页  1 2 

Tags:Lua 嵌入 自己

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接