用ffi形式在Node中调用C/C++接口,提示undefined symbol?

 手机用户2602889207 发布于 2022-11-02 07:48

在linux下(Ubuntu 16.04 LTS 版本),使用node-ffi调用C/C++的动态库xxx.so,提示Error: Dynamic Linking Error: /home/riverxs/src/kpm/libKPM.so: undefined symbol: jpeg_stdio_src,如下图:

按照提示Google后估计原因是链接生成动态库时未链接libjpeg.so库,所以找不到所需符号,因此在生成动态库时有如下操作:

带后缀.o的文件是我从libKPM.a静态库中解包出来的(目的是使用这些目标文件生成需要的动态库)

编译命令:g++ -shared -fPIC -rdynamic -std=c++11 -L/usr/local/lib -ljpeg *.o -o libKPM.so

L/usr/local/lib下是缺失的动态库libjpeg.so所在位置,如下图:

可是最后生成的libKPM.so动态库还是缺失刚刚链接过libjpeg.so里的符号,nm命令查找undefined symbol,:如下图:

jpeg_stdio_src等符号在libjpeg.so里,按理说,g++ ... 生成动态库时指定libjpeg.so的文件路径即可成功链接上,还是出现如下情况

我不是做C/C++的,对C/C++编译链接也不是很懂,此问题困惑已久,Google,Stack Overflow 上都找到过类似问题但都未能解决,还望各位大触指点一二,感激不敬。我会多多散分,ps:其实我是个写前端的:)

补充:ldd libKPM.so查看所需动态库

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有