Lua 调用 C++ 函数

本文详细介绍如何使用Lua 5.1或更高版本创建DLL并导出函数,包括环境搭建、代码实现及调用示例。通过具体步骤指导读者完成从创建DLL项目到在Lua编辑器中成功调用导出函数的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备

首先你要有 Lua 环境,可以安装比较方便的 lua 5.1
😕 😕 😕
也可以去 lua 官网下载源码自己编译
手动搭建 lua 5.3 教程参考这里

开始

创建一个空的 Dll 项目,随便起名。在项目属性 - C++ - 附加包含目录 中添加 lua 中的
include 文件夹:
在这里插入图片描述
然后在 属性- 连接器 - 常规 - 附加库目录 添加 lua 的 lib 文件夹:
在这里插入图片描述
再在 属性 - 链接器 - 输入 - 附加依赖项 中加入 lua5.1.lib:
在这里插入图片描述
将如下代码粘贴到 main.cpp 内:


extern "C" {
#include "lua.h"  
#include "lualib.h"  
#include "lauxlib.h"
};
#include <iostream>  
using namespace std;

// 给 Lua 调用的函数
int ShowMsg(lua_State* luaEnv) { 
    cout << "Hello aaa" << endl;
    return 0;  
}

// { 函数名,函数指针 },必须以 { NULL, NULL } 结尾
luaL_Reg luaLibs[] = {
    { "ShowMsg", ShowMsg},
    { NULL, NULL }
};

// dll 导出函数
extern "C" __declspec(dllexport)
void luaopen_aaa(lua_State* luaEnv) {
    char* LIBRARY_NAME = "aaa";	
    luaL_register(
		luaEnv,			// 主线程栈结构
		LIBRARY_NAME,	// 表名,也是 dll 文件名
		luaLibs			// 表实例
		); 
}

编译,找到你的 dll,把名字改成 aaa.dll,放到这个路径内:
在这里插入图片描述
打开 lua 编辑器。写如下代码:

require "aaa"
aaa.ShowMsg()

点击运行,成功!
在这里插入图片描述

注意,以下几处必须全部相同,否则运行失败!

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值