#下载源码
git clone "https://github.com/lagadic/visp.git"
#work目录
mkdir work
#build目录
mkdir build
#cmake配置
cd work
ccmake ../visp # 关闭动态库,设置为debug模式, output目录为上面的build目录
cmake ../visp
cd ../visp
make -j
#写了一个简单的test.so, 用于python上测试
g++ -o test.o -c test.cpp -I"/data/ahfuzhang/visp/build/include" -std=c++11 -fPIC
#链接
g++ -shared -o libtest.so test.o /data/ahfuzhang/visp/build/lib64/*.a
python中执行报错:
Cannot find reference 'xxx' in libtest.so
#执行ldd检查链接情况:
ldd -r libtest.so
ldd -r libtest1.so linux-vdso.so.1 => (0x00007ffe5e1f7000) /$LIB/libonion.so => /lib64/libonion.so (0x00007fae7bf1a000) libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fae7b846000) libm.so.6 => /lib64/libm.so.6 (0x00007fae7b544000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fae7b32e000) libc.so.6 => /lib64/libc.so.6 (0x00007fae7af6c000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fae7ad68000) /lib64/ld-linux-x86-64.so.2 (0x00007fae7be03000) undefined symbol: _ZN9vpDisplay20setDownScalingFactorEj (./libtest1.so) undefined symbol: _ZN9vpDisplay20setDownScalingFactorENS_11vpScaleTypeE (./libtest1.so) undefined symbol: _ZTI9vpDisplay (./libtest1.so) undefined symbol: _ZTVN2cv11_InputArrayE (./libtest1.so) undefined symbol: _ZTVN2cv12_OutputArrayE (./libtest1.so) undefined symbol: XDrawString (./libtest1.so) undefined symbol: XLoadFont (./libtest1.so) undefined symbol: _ZN2cv3Mat10deallocateEv (./libtest1.so) undefined symbol: XMoveWindow (./libtest1.so) undefined symbol: _ZN16vpRotationMatrixC1ERK14vpThetaUVector (./libtest1.so) undefined symbol: _ZN19vpHomogeneousMatrix6insertERK19vpTranslationVector (./libtest1.so) undefined symbol: cvPutText (./libtest1.so) undefined symbol: XClearWindow (./libtest1.so) undefined symbol: cvRectangle (./libtest1.so) undefined symbol: cvGetTextSize (./libtest1.so) undefined symbol: XStoreName (./libtest1.so) undefined symbol: XLookupString (./libtest1.so) undefined symbol: _ZN13vpImageFilter15getGradXGauss2DERK7vpImageIhERS0_IdEPKdS7_j (./libtest1.so) undefined symbol: XCreateImage (./libtest1.so) undefined symbol: _ZNK18vpCameraParameters13get_K_inverseEv (./libtest1.so) undefined symbol: _ZN2cv8Subdiv2D6insertENS_6Point_IfEE (./libtest1.so) undefined symbol: _ZN7vpPlaneaSERKS_ (./libtest1.so) undefined symbol: XSetFont (./libtest1.so) undefined symbol: _ZN13vpImageFilter6filterERK7vpImageIhERS0_IdEPKdj (./libtest1.so) undefined symbol: _ZN6vpTime4waitEd (./libtest1.so) undefined symbol: _ZN9vpDisplayD2Ev (./libtest1.so) undefined symbol: cvCircle (./libtest1.so) undefined symbol: cvSetMouseCallback (./libtest1.so) undefined symbol: XCreateSimpleWindow (./libtest1.so) undefined symbol: XCreateColormap (./libtest1.so) undefined symbol: dgesdd_ (./libtest1.so) undefined symbol: XOpenDisplay (./libtest1.so) undefined symbol: _ZNK2cv3Mat3invEi (./libtest1.so) undefined symbol: XDrawPoint (./libtest1.so) undefined symbol: XImageByteOrder (./libtest1.so) undefined symbol: XCopyArea (./libtest1.so) undefined symbol: XDrawLine (./libtest1.so) undefined symbol: XDestroyWindow (./libtest1.so) undefined symbol: cvReleaseImage (./libtest1.so) undefined symbol: XCloseDisplay (./libtest1.so) undefined symbol: XFillArc (./libtest1.so) undefined symbol: _ZN2cv13projectPointsERKNS_11_InputArrayES2_S2_S2_S2_RKNS_12_OutputArrayES5_d (./libtest1.so) undefined symbol: XSetForeground (./libtest1.so) undefined symbol: XFillRectangle (./libtest1.so) undefined symbol: _ZN13vpImageFilter17getGaussianKernelEPdjdb (./libtest1.so) undefined symbol: _ZN8vpRobustC1Ej (./libtest1.so) undefined symbol: XFreeGC (./libtest1.so) undefined symbol: _ZN7vpPlaneC1Ev (./libtest1.so) undefined symbol: cvNamedWindow (./libtest1.so) undefined symbol: XDisplayName (./libtest1.so) undefined symbol: XDrawRectangle (./libtest1.so) undefined symbol: _ZN19vpHomogeneousMatrix9buildFromEdddddd (./libtest1.so) undefined symbol: XBitmapPad (./libtest1.so) undefined symbol: XSetLineAttributes (./libtest1.so) undefined symbol: XClearArea (./libtest1.so) undefined symbol: _ZNK2cv8Subdiv2D15getTriangleListERSt6vectorINS_3VecIfLi6EEESaIS3_EE (./libtest1.so) undefined symbol: _ZN13vpImageFilter27getGaussianDerivativeKernelEPdjdb (./libtest1.so) undefined symbol: cvMoveWindow (./libtest1.so) undefined symbol: XCheckMaskEvent (./libtest1.so) undefined symbol: dgetrf_ (./libtest1.so) undefined symbol: XMapWindow (./libtest1.so) undefined symbol: cvDestroyWindow (./libtest1.so) undefined symbol: cvLine (./libtest1.so) undefined symbol: _ZN2cv3Mat8copySizeERKS0_ (./libtest1.so) undefined symbol: cvCreateImage (./libtest1.so) undefined symbol: _ZN2cv11determinantERKNS_11_InputArrayE (./libtest1.so) undefined symbol: cvWaitKey (./libtest1.so) undefined symbol: XSetWindowBackground (./libtest1.so) undefined symbol: XCreateGC (./libtest1.so) undefined symbol: XSelectInput (./libtest1.so) undefined symbol: _ZNK7vpPlane9getNormalER11vpColVector (./libtest1.so) undefined symbol: XFlush (./libtest1.so) undefined symbol: _ZN2cv3Mat3eyeEiii (./libtest1.so) undefined symbol: _ZN13vpImageFilter17getGaussPyramidalERK7vpImageIhERS1_ (./libtest1.so) undefined symbol: XSync (./libtest1.so) undefined symbol: XMaskEvent (./libtest1.so) undefined symbol: _ZN2cv8Subdiv2DC1ENS_5Rect_IiEE (./libtest1.so) undefined symbol: _ZN2cv3SVDclERKNS_11_InputArrayEi (./libtest1.so) undefined symbol: XPutImage (./libtest1.so) undefined symbol: _ZN2cv11_InputArrayC1ERKNS_7MatExprE (./libtest1.so) undefined symbol: _ZN8vpRobust10MEstimatorENS_21vpRobustEstimatorTypeERK11vpColVectorRS1_ (./libtest1.so) undefined symbol: _ZN2cv11_InputArrayC1ERKNS_3MatE (./libtest1.so) undefined symbol: _ZN19vpHomogeneousMatrix6insertERK16vpRotationMatrix (./libtest1.so) undefined symbol: cvShowImage (./libtest1.so) undefined symbol: XInstallColormap (./libtest1.so) undefined symbol: _ZN2cv7noArrayEv (./libtest1.so) undefined symbol: XGetImage (./libtest1.so) undefined symbol: XDrawArc (./libtest1.so) undefined symbol: XSetWindowBackgroundPixmap (./libtest1.so) undefined symbol: XAllocColor (./libtest1.so) undefined symbol: XQueryPointer (./libtest1.so) undefined symbol: _ZN9vpDisplayC2Ev (./libtest1.so) undefined symbol: XSetStandardProperties (./libtest1.so) undefined symbol: _ZN19vpHomogeneousMatrixC1Ev (./libtest1.so) undefined symbol: XFreePixmap (./libtest1.so) undefined symbol: _ZN13vpImageFilter15getGradYGauss2DERK7vpImageIhERS0_IdEPKdS7_j (./libtest1.so) undefined symbol: _ZN19vpHomogeneousMatrixaSERKS_ (./libtest1.so) undefined symbol: cvInitFont (./libtest1.so) undefined symbol: _ZN2cv8fastFreeEPv (./libtest1.so) undefined symbol: XCreatePixmap (./libtest1.so) undefined symbol: _ZN2cv3Mat5zerosEiii (./libtest1.so) undefined symbol: XStoreColor (./libtest1.so) undefined symbol: _ZN14vpImageConvert7convertEPK9_IplImageR7vpImageI6vpRGBaEb (./libtest1.so) undefined symbol: _ZN6vpRGBaaSERKS_ (./libtest1.so) undefined symbol: XSetWindowColormap (./libtest1.so) undefined symbol: _ZNK18vpCameraParameters5get_KEv (./libtest1.so) undefined symbol: dgetri_ (./libtest1.so) undefined symbol: _ZN9vpDisplay8setScaleENS_11vpScaleTypeEjj (./libtest1.so)
#最后逐个搜索库,然后用下面的参数解决:
g++ -shared -o libtest.so test.o -L"/data/ahfuzhang/visp/build/lib64" /data/ahfuzhang/visp/build/lib64/*.a -lstdc++ -lX11 -lopencv_core -lopencv_imgproc -lopencv_highgui -lvisp_core -lvisp_gui -lopencv_calib3d -L/usr/lib64/ "/usr/lib64/liblapack.so.3.4.2"