当前位置: 首页 > 工具软件 > php-cjson > 使用案例 >

编译lua-cjson成功但使用时找不到cjson的问题解决

何琨
2023-12-01

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同级目录即可。

 类似资料: