我正在做一个项目,我们使用的是一个带有CPP-API的Basler派伦相机。除了picture taking之外,我们的大多数代码都是用Python编写的,因此我们使用swig从CPP包装take_image()-函数。在
下面是我们对swig和g++的调用:
swig -python -c++ frompytocpp.i
g++ -c -fpic cppcamera.cpp frompytocpp_wrap.cxx
-I/opt/pylon/genicam/library/CPP/include -I/opt/pylon/include -DUSE_GIGE
-I/usr/include/python2.6
g++ -shared cppcamera.o frompytocpp_wrap.o -o _frompytocpp.so
-L/opt/pylon/lib64 -L/opt/pylon/lib -L/opt/pylon/genicam/bin/Linux64_x64
-L/opt/pylon/genicam/bin/Linux64_x64/GenApi/Generic -Wl,-E -lpylonbase
-lpylonutility
它编译得很好,但是在运行时尝试创建一个camera对象时,会抛出一个似乎与未解析符号相关的异常。根据cameraapi手册,标志-Wl,-E非常关键,“否则链接器在运行时将无法正确识别和匹配挂架符号”。我查找了g++的手册页,意识到-Wl用于将选项传递给链接器,但无法确定-E选项在传递给-Wl时会做什么。有人吗?在
运行时问题只在从python调用拍照函数时才会显现出来。所以只是标准编译cppcamera.cpp合并-Wl,-E可以很好地工作,但是当我们创建python中包装器使用的共享库时,有些东西是不正确的/缺少的。有没有关于g++调用中可能缺少的内容的建议?在
您可以检查help manual of ^{} (如果
gcc
设置为使用ld
作为链接器):相关问题 更多 >
编程相关推荐