跟着本文, 大家只需要简单的4个步骤就能build出自己的C/CPP语言DLL库供Lua require随意调用.
需要准备的软件
- Visual Studio 2015/2017
- Lua5.1 source code (click to download)
step1: 建DLL工程
使用VisualStudio2017, 新建一个Win32 Console Application
1
2step2: 拷lua5.1代码
创建成功后, 从Lua5.1 source file(百度搜索lua5.1 source file下载)中, 拷贝所有的源代码.c和.h文件到项目文件夹中. 我们其实有更简洁的引用lua.lib而不是直接拷贝源代码的方式, 但是新手入门先用这个方法不容易出错.
3拷贝完文件后, 要在Visual Studio IDE中右键项目名 --> 添加 --> 现有项目, 选中所有刚才复制的lua5.1源代码.
step3: 写DllMain.cpp代码
新建
DllMain.cpp
文件, 写上如下的代码. 代码很简短, 而且写好了注释供大家参考.extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }; #include <iostream> using namespace std; extern "C" int ShowMsg(lua_State* luaEnv) { cout << "Hello world from clibs!" << endl; return 0; // 返回值个数为0个. } // part one: 要导出的函数列表 static luaL_Reg luaLibs[] = { { "ShowMsg", ShowMsg}, { NULL, NULL } }; // part two: DLL入口函数,Lua调用此DLL的入口函数. extern "C" __declspec(dllexport) int luaopen_WinFeature(lua_State* luaEnv) { //WinFeature是modole名, 将来require这个名字 const char* const LIBRARY_NAME = "WinFeature"; //这里也写WinFeature luaL_register(luaEnv, LIBRARY_NAME, luaLibs); //关键一行, 在luaState上注册好这个lib return 1; }
step4: build出dll库
点击
build --> build solution (ctrl + shift + B)
生成出xxx.dll库文件.
在项目的Debug文件夹中取出所需的dll库.![]()
debug文件夹中取出xxx.dll文件再把这个xxx.dll库复制到
C:\Program Files (x86)\Lua\5.1\clibs
文件夹下即可. (这里路径名仅供参考, 要以大家的实际lua路径为准)extra: 测试是否成功
require "WinFeature" WinFeature.ShowMsg() -- it should prints "Hello world from clibs!"
![]()
cmd结果显然, 我们成功了!!!
作者:CarbonCheney
链接:http://www.jianshu.com/p/ce18bc1d49ef
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
lua调C++
最新推荐文章于 2024-03-03 13:58:43 发布