概述
最近项目c应用程序嵌入lua脚本,在lua中用到了第三方库luasocket,程序启动报错:
Undefined symbol "lua_insert"
问题困扰我2天直到找到一片文章
链接lua的正确方式
这几天,我们遇到一个问题:在xy2.5引擎里面,使用posix库或者socket库时,主
程序会crash。,改变代码的顺序或加入 print代码,主程序又可能不会再crash了。检
查产生的core文件,发现内存已经被破坏掉了,无法从中得知调用堆栈的信息。经过后
来用多种手段检查(在另一篇文章中介绍),终于发现问题所在:在垃圾回收过程中,
free了dummynode_,而dummynode_实际上是一个静态变量,不是通过malloc分配的。
进一步分析,才发现是由于链接参数不正确导致的。
正确的编译和链接方式是:
1. lua解释器
按官方的做法,lua解释器被编译成静态链接库。其Makefile也未写明编译为动态链接
库的方式。因此,假定大家都用静态链接的方式使用lua。
2. 第三方库
如posix和socket,以socket库为例,连接生成socket.so时的指令为:
ld -o socket.so $(SOCKET_OBJS)
注意:这里并没有写成
ld -o socket.so $(SOCKET_OBJS) -llua
即没有把lua解释器也链接进来,如果加了-llua,就会在so
最后
以上就是斯文天空为你收集整理的lua调用html链接,链接lua的正确方式的全部内容,希望文章能够帮你解决lua调用html链接,链接lua的正确方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复