素材牛VIP会员
用ffi形式在Node中调用C/C++接口,提示undefined symbol?
 馒***火  分类:Node.js  人气:781  回帖:1  发布于6年前 收藏

在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查看所需动态库

 标签:ffinodecc++

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv6 码匠
zh***ni 职业无 6年前#1
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取