用ffi形式在Node中调用C/C++接口,提示undefined symbol?
高洛峰
高洛峰 2017-04-17 15:26:39
0
0
643

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(0)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!