lua加载动态库的注意事项
lua加载的动态库有两种,lua专用的和lua非专用的,专用的是指有luaopen_xxx函数的库,没有的就是非专用的。
对于非专用的,可以调用package.loadlib函数加载,这函数是平台相关的,这里只探讨专用库。
测试项目如下
ldll项目为自定义的dll库,lua51为lua源码,main项目是执行程序,还是一个main.lua,会是main函数内加载
ldll,lua51都生成动态库,生成的方法参考:http://blog.youkuaiyun.com/arkadia2/article/details/52302050
要注意的是lua51要设置宏LUA_BUILD_AS_DLL,设置方法参考:http://blog.youkuaiyun.com/arkadia2/article/details/52084211
设置好各项目的包含文件,引用库(也可以通过项目引用直接设置)
ldll文件下只有init.h和init.cpp
init.h
#ifndef __LDLL_H__
#define __LDLL_H__
#ifdef _DLL_EXPORT_
#define LDLL_API __declspec(dllexport)
#else
#define LDLL_API __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "lauxlib.h"
LDLL_API int luaop