簡體   English   中英

使用python將我的C ++代碼包裝到* .so文件中時出錯

[英]Error when using python to wrap up my c++ code into *.so file

我有一個用c ++編寫的小項目,現在我將其構建為* .so文件。 它在構建過程中工作正常,沒有錯誤並生成了* .so,我想要。

我用於構建* .so文件的文件

module1 = Extension('classmod',
        include_dirs=['/usr/lib/python2.7/dist-packages/numpy/','/home/******/OpenCV/opencv/release/include','/home/******/OpenCV/opencv/release/include/opencv','/home/******/OpenCV/opencv/release/include/opencv2','/home/******/modulepipe/eigen-eigen-b23437e61a07'],
        library_dirs=['/usr/local/lib/'],
        libraries=['opencv_calib3d','opencv_contrib','opencv_core','opencv_features2d','opencv_flann','opencv_gpu',
                           'opencv_highgui','opencv_imgproc','opencv_legacy','opencv_ml','opencv_nonfree','opencv_objdetect',
                   'opencv_photo','opencv_stitching','opencv_superres','opencv_ts','opencv_video','opencv_videostab'],
        sources=['classmodule.cpp','patch_match.cpp','compute_jaccard.cpp','find_diff.cpp','refine_match.cpp','tps.cpp','book_pipeline_single.cpp','imgfeatures.c','kdtree.c','minpq.c','sift.c','utils.c'],
                 language='c++',
             extra_compile_args=['-O3'])

setup(name='classmod',
        version='1.0',
        description='blah',
        author='blah',
        url='blah',
        ext_modules=[module1]
)

但是,當我嘗試使用lbb加載此.so lib時,它告訴我大約找不到幾個opencv * .so lib。

我用於測試的命令:

~/CDH/modulepipe$ ldd classmod.so 
        linux-gate.so.1 =>  (0xb77b4000)
        libopencv_calib3d.so.2.4 => not found
        libopencv_core.so.2.4 => not found
        libopencv_features2d.so.2.4 => not found
        libopencv_highgui.so.2.4 => not found
        libopencv_imgproc.so.2.4 => not found
        libopencv_nonfree.so.2.4 => not found
        libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb7690000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7663000)
        libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7645000)
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb762a000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7480000)
        /lib/ld-linux.so.2 (0xb77b5000)

這是我的問題。 有人可以幫我解釋一下嗎?

我以前遇到過“找不到庫”的問題,它處於構建階段。 但是在這種情況下,它在構建過程中通過了,這意味着ldd可以找到* .so。 因此,當我嘗試運行“ ldd classmod.so”時,找不到* .so。

您的加載程序找不到這些共享庫。 可以將它們放置在裝入程序希望找到它們的某個位置,修改裝入程序配置( man 8 ldconfig )以查找它們所在的共享對象,或者使用裝入程序的環境變量之一( man 8 ld.so )指定要查找的位置。他們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM