如何从python脚本调用共享库(.so文件)?
我有一个共享库如何从python脚本调用共享库(.so文件)?,python,c++,cmake,shared-libraries,boost-python,Python,C++,Cmake,Shared Libraries,Boost Python,我有一个共享库hello\u ext.so。我需要在python脚本中导入这个共享库。 目录是: - project | - py_binding | - hello_ext.cpp | - CMakeLists.txt | - python_script.py | - CMakeLists.txt 装订正确且有效 在cmake..和make之后,可以从build文件夹调用库 $ python3 $ from hello_ext import greet $ greet() 'hell
hello\u ext.so
。我需要在python脚本中导入这个共享库。
目录是:
- project
| - py_binding
| - hello_ext.cpp
| - CMakeLists.txt
| - python_script.py
| - CMakeLists.txt
装订正确且有效
在cmake..
和make
之后,可以从build
文件夹调用库
$ python3
$ from hello_ext import greet
$ greet()
'hello, world'
因此,管道工程。
但是,如果我使用python3//python\u script.py
我得到这个错误:
Traceback (most recent call last):
File "/home/sharad/git_repository/longitudinal_control_pid/py_bindings/arduino_connection_usb.py", line 1, in <module>
from hello_ext import greet
ModuleNotFoundError: No module named 'hello_ext'
主目录中的CMakeLists.txt:
cmake_minimum_required(VERSION 3.0.0)
# set the project name
project(longitudinal_control_pid CXX)
# Set some global variables
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
enable_testing()
add_subdirectory(googletest)
file(GLOB SOURCES
src/*.cpp
)
file(GLOB HEADERS
include/*.h
)
add_library(longitudinal_control_pid ${SOURCES})
target_include_directories(longitudinal_control_pid PUBLIC ./)
add_subdirectory(test)
add_subdirectory(py_bindings)
我正在使用Ubuntu20.04
,python3
。
我想让这个脚本导入构建的共享库并使用绑定
我已经在谷歌上搜索过了,还没有找到适合我的解决方案
有人知道怎么做吗
谢谢现在还不清楚到底是什么不起作用。我编辑了这些问题。我希望现在更清楚。共享库需要在Python的模块搜索路径中。我试图避免把.so文件放在这个目录中,因为每次在C++端更改东西时,我都必须这样做。有没有办法从构建中包含.so文件?这在
bazel
中是可能的,我可以让python目标依赖于。有可能使用cmake吗?Python有一个叫做搜索路径的东西。我不明白,克马克或巴泽尔如何可能影响到这一点。
cmake_minimum_required(VERSION 3.0.0)
# set the project name
project(longitudinal_control_pid CXX)
# Set some global variables
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
enable_testing()
add_subdirectory(googletest)
file(GLOB SOURCES
src/*.cpp
)
file(GLOB HEADERS
include/*.h
)
add_library(longitudinal_control_pid ${SOURCES})
target_include_directories(longitudinal_control_pid PUBLIC ./)
add_subdirectory(test)
add_subdirectory(py_bindings)