export.h
#ifndef _ACTS_ZIP_H_
#define _ACTS_ZIP_H_
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib,"lua5.1.lib")
#ifdef ACTS_ZIP_DLL
#define ACTS_ZIP_DLL_API_ __declspec(dllexport)
#else
#define ACTS_ZIP_DLL_API_ __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
ACTS_ZIP_DLL_API_ int LuaZip(lua_State* L);
ACTS_ZIP_DLL_API_ int LuaUnZip(lua_State* L);
ACTS_ZIP_DLL_API_ int LuaOpenLuaZipAPI (lua_State* L);
#ifdef __cplusplus
}
#endif
#endifexport.cpp
#include <Windows.h>
#include "stdafx.h"
#include "export.h"
#include "zip.h"
#include <tchar.h>
#include "ActsZipAPI.h"
int LuaUnZip(lua_State* L)
{
const char* zipFileName = lua_tostring(L,1);
const char* targetDir = lua_tostring(L,2);
bool flag = false;
flag = UnActsZip(zipFileName,targetDir);
lua_pushboolean(L,flag);
return 1;
}
int LuaZip(lua_State* L)
{
const char* dir = lua_tostring(L,1);
const char* fileName = lua_tostring(L,2);
const char* targetName = lua_tostring(L,3);
bool flag = false;
flag = ActsZip(dir,fileName,targetName);
lua_pushboolean(L,flag);
return 1;
}
static const struct luaL_Reg LuaZipAPI[]={
{"LuaZip",LuaZip},
{"LuaUnZip",LuaUnZip},
{NULL,NULL}
};
int LuaOpenLuaZipAPI (lua_State* L)
{
luaL_register(L,"LuaZipAPI",LuaZipAPI);
return 1;
}
生成动态链接库(ActsZip.dll)放置于工程目录下,在lua文件中按照如下方式调用
local LoadFunc = package.loadlib("../ActsZip.dll","LuaOpenLuaZipAPI")
if nil ~= LoadFunc
then LoadFunc()
end
LuaZip = LuaZipAPI
LuaZip.LuaZip(Cfgpath,"",filePath)
LuaZip.LuaUnZip(filePath,Cfgpath)
本文介绍了一个使用Lua语言进行文件压缩和解压缩操作的C++扩展库。该库提供了LuaZip和LuaUnZip两个核心函数,允许Lua脚本通过简单的API调用来实现文件的ZIP压缩与解压。此外,还介绍了如何在Lua脚本中加载和使用这个动态链接库。
339

被折叠的 条评论
为什么被折叠?



