quick中集成luaxml

我把luaxml的库文件放在这个D:\quick-cocos2d-x\lib\cocos2d-x\scripting\lua\lua_extensions\LuaXml 目录下 官方上下载的luaxml库中,如图1所示,quick中集成只需要LuaXML_lib.c 这个文件 把这个文件 拷贝到lua_extensions\LuaXml下,并改名LuaXML_lib.cpp 已.c 直接编译的话 会有很多错误 在网上碰到一个集成过protobuffer的哥们 说改成cpp,果然没有那么多错误了 但是还是有一个致命的错误,后边介绍
在上边文件夹中新建一个LuaXML_lib.h文件
#ifndef LUAXML_H
#define LUAXML_H

#include “lauxlib.h”

int luaopen_LuaXML_lib(lua_State *L);

#endif

然后把这两个文件导入到quick的player工程中如图2所示

编译完之后报错

添加到vs工程

添加路劲到vs工程

结果是这样的,报错

player 中我也加了luaxml的路径

D:\quick-cocos2d-x\lib\cocos2d-x\scripting\lua\lua_extensions\lua_extensions.c部分代码修改如下,加了#include “LuaXml/LuaXML_lib.h” {“LuaXML_lib”,luaopen_LuaXML_lib},

//luaxml_lib.h
#include “LuaXml/LuaXML_lib.h”

static luaL_Reg luax_exts] = {
{“cjson”, luaopen_cjson_safe},
{“zlib”, luaopen_zlib},
{“pack”, luaopen_pack},
{“socket.core”, luaopen_socket_core},
{“mime.core”, luaopen_mime_core},
{“lfs”, luaopen_lfs},
{“lsqlite3”, luaopen_lsqlite3},
{“LuaXML_lib”,luaopen_LuaXML_lib},
{NULL, NULL}
};

LuaXML_lib.h这个头文件需要修改一下

#ifndef LUAXML_H
#define LUAXML_H

#include “lauxlib.h”

#ifdef __cplusplus
extern “C” {
#endif

int luaopen_LuaXML_lib(lua_State *L);

#ifdef __cplusplus
}
#endif

#endif

LuaXML_lib.c这个文件还是以.c的形式存在还是.cpp???

这个不重要。只是如果你改成cpp文件,又没有包括LuaXML_lib.h这个头文件的话,需要在定义luaopen_LuaXML_lib函数的实现时,指定其为标准C函数,也就是加上extern "C"前缀。

楼主你好,我按照你的方法集成LuaXml成功了,执行build_native.bat也成功了。但是在安卓真机调试的时候出现这个错误,请问有什么解决方法吗?

你看看 其他模块的android mk 是怎么写的?你是不是mk 没有加载这个模块啊

看到群里边 有人问 集成方法,这篇帖子 没有给出最终的解决方案,现给出
lua_extensions.c 这个文件 添加
#include “luaxml/LuaXML_lib.h”
{“LuaXML_lib”,luaopen_LuaXML_lib},

LuaXML_lib.h
#ifndef LUAXML_H
#define LUAXML_H
#include “lauxlib.h”
#ifdef __cplusplus
extern “C” {
#endif
int luaopen_LuaXML_lib(lua_State *L);
#ifdef __cplusplus
}
#endif
#endif

LuaXML_lib.cpp 修改如下
加入#include “LuaXML_lib.h”
extern “C” {
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
}

lua相关的头文件 用extern 包含

去掉int _EXPORT luaopen_LuaXML_lib 函数实现中的_EXPORT

我完全按照教程上做的啊,为啥提示 luaopen_LuaXML_lib 未声明的标示符 啊?

感谢分享感谢分享感谢分享

感谢分享感谢分享感谢分享

mark:2::2::2::2::2::2::2::2::2::2: