vs+qt配置lua(使用vs2013+qt5.9)
1、在vs中新建一个qt工程,在当前工程目录下加入下载编译好的lua头文件和lib库文件
2、代码中加入
extern "C"{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
#pragma comment(lib,"lua5.1.lib")
3、测试代码
#include <QScopedPointer>
#include <QMutex>
#include <QMutexLocker>
#include <QtCore/QCoreApplication>
extern "C"{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
#pragma comment(lib,"lua5.1.lib")
class Lua{
public:
static QScopedPointer<Lua> self;
static Lua *Instance();
int initLua();
static int fun1(lua_State *L);
lua_State *L;
};
QScopedPointer<Lua> Lua::self;
Lua *Lua::Instance(){
if (self.isNull()){
static QMutex mutex;
QMutexLocker locker(&mutex);
if (self.isNull()){
self.reset(new Lua);
}
}
return self.data();
}
int Lua::initLua(){
L = luaL_newstate();
if (NULL == L)
return 0;
luaL_openlibs(L);
lua_register(L, "fun1", fun1);
int ret = luaL_dofile(L, "1.lua");
return 1;
}
int Lua::fun1(lua_State *L){
lua_pushstring(L, "good");
return 1;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Lua::Instance()->initLua();
return a.exec();
}
4、编译运行发现,报关于lua函数的错误且大多是“无法解析的外部符号。。。”,然后弄了半天还是不行,想到可能是因为我使用的编译器msvc是64位的,而lua的lib库文件是32位的,因此又上官网下载了64位的lib。
https://sourceforge.net/projects/luabinaries/files/5.1.4/Windows%20Libraries/
5、将lib换成64位的之后,编译又出现了报错,这次不是lua相关的错而反而都是qt的错误,之前都正常的。之后折腾了半天,看到一篇博客 https://blog.csdn.net/jadeshu/article/details/79177308 ,也不知道属不属于这种问题,然后在项目配置—配置属性—链接器—输入—附加依赖项中加入了 Qt5Core.lib 之后,编译正常了。