vs+qt 调用第三方库出错解决办法

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 之后,编译正常了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值