1、按照现在网上找到的内容,使用mingw32-make编译,制定了-I($PREFIX)/include -L($PREFIX)/lib -llua5.1 链接时,仍然报错,找不到lua的诸多符号。猜测链接问题,但是dll都找到了,为什么找不到lua符号,不理解。放弃这种方案。
2、看到源码中有CMakeLists.txt,因为windows开发我用的vs2017,然后之前也用cmake编译过其它开源库,所以环境都有。直接用cmake配置,生成vs2017的sln。
编译成功。
尝试运行lua-cjson的demo,local cc = require "cjson"报.\cjson.dll中找不到cjson。
error loading module 'cjson' from file '.\cjson.dll':
找不到指定的程序
后来看到一篇文章,win安装 lua php 扩展,Win 安装 lua 环境_这只萝北不能吃的博客-CSDN博客
仔细去看代码,发现是函数没导出,按照文章操作即可找到cjson。
但是其实还应该在cjson.def中,添加luaopen_cjson_safe,把这个也导出才完整,不然用到cjson_safe又会找不到。
另外,修改lua_cjson.c 定义导出声明,应该也可以。不过这种方式我没测试了。
定义并指定cjson.def后,编译,将编译好的cjson.dll拷贝到lua环境下的clibs目录,将源码中的lua文件夹,拷贝到lua环境.exe同级目录即可。