使用C ++共享库本身使用C ++共享库构建C共享库,未定义符号

时间:2020-08-13 17:01:20

标签: c++

我正在使用PDFium(使用忍者构建的Chromium PDF库)。

最近,我不得不添加一些函数来帮助文本操作,因此我创建了pdfiumext(C ++),这实际上是针对更大的pdfium库(C ++)构建的一些其他函数。

现在,我想将新功能与仍在python脚本中pdfium中定义的功能一起使用,我编写了一个C层,其中包含我的特定于任务的功能,然后使用ctypes进行调用。该层在添加pdfiumext之前起作用,但是现在当我运行python代码时,由于PDFiumext中的“缺失”功能,从pdfiumext引发了undefined symbol异常。

这是我的GCC调用:

gcc -shared pdfium_generator.c -L../Pdfium/build/out/ -I../Pdfium/build/ -I../Pdfium/pdfiumext/ -lpdfiumext -lpdfium -o pdfium_generator.so -fPIC

使用nm -C时,我的函数确实存在于PDFium库中,但是名称似乎没有被篡改,而在Python中引发的异常中,该名称被篡改了。

所以回顾一下:

  • C-> libpdfium.so
  • B-> libpdfiumext.so
  • A-> my_layer.so

我的依赖项是:

  • A需要B和C
  • B需要C

当我在A上运行ctypes时,C中缺少由B引发的符号错误。

0 个答案:

没有答案