现在的位置: 首页 > 综合 > 正文

Lua学习笔记(1)

2014年02月24日 ⁄ 综合 ⁄ 共 950字 ⁄ 字号 评论关闭

前段时间一直在寻找, 究竟C++中嵌入哪种脚本语言比较好呢? Python, Ruby, Lua, Perl ?

后来, 开源社区的朋友很多都推荐Lua, 于是我也就开始学习Lua编程.

在大概了解Lua的基本编程之后,便开始实际写起程序. 于是在 http://www.lua.org 下载了源代码, SDK.

我的开发环境是VS.net 2003, 新建一个空的C++ console项目, 再新建一个main.cpp文件, 然后添加以下代码:

#include "stdio.h"

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

lua_State* L;

int main()
{
 //init Lua
 L = lua_open();

 //load lua base library
 lua_baselibopen(L);

 //run the script
 lua_dofile(L, "test.lua");
 lua_dostring(L, "print 5+10");

 //close lua
 lua_close(L);

 printf("Hello, I am %s", "the one");
 return 0;
}

编译连接的时候, 出错信息如下:

testlua1 error LNK2019: 无法解析的外部符号 _lua_dofile ,该符号在函数 _main 中被引用
testlua1 error LNK2019: 无法解析的外部符号 _lua_dostring ,该符号在函数 _main 中被引用

后来, 我在网上基本上没有找到相关的答案, 即使有,也只是设置lib和include路径之类的. 其实这些设置我都已经正确设置好了的.

那问题究竟出在哪里呢? 我试着把调用lua_dofile和lua_dostring的两个语句注释掉, 结果编译连接成功. 这说明Lua已经基本能用了, 只是链接器没有找到lua_dofile和lua_dostring这两个函数的地址,所以链接失败. 但是, 这两个函数在lauxlib.h头文件中是有声明的, 只是在lua.dll和lualib.dll中都不见它们的踪影!

我想,这就是这两个函数链接失败的直接因素吧,但是为什么这些动态链接库里都没有这两个函数呢? 奇怪!

大家有这样的经历吗? 或者知道解决方法吗?

【上篇】
【下篇】

抱歉!评论已关闭.