前段时间一直在寻找, 究竟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中都不见它们的踪影!
我想,这就是这两个函数链接失败的直接因素吧,但是为什么这些动态链接库里都没有这两个函数呢? 奇怪!
大家有这样的经历吗? 或者知道解决方法吗?