Python调用C++程序实现

基本环境说明

由于C++的执行速度快、控制粒度细,Python上层开发方便、迭代速度快,故经常可以遇到C++写好接口供Python调用的情况,但是其中bug还不少(尤其是动态链接库一个链接另一个,就会产生比较复杂的关系)
我这里算试出了一种解决方案,供大家参考
尝试了g++,实在没解决动态库相互链接的问题,最后用CMake解决的

具体实现

整体思路

C++做完封装后,用CMake生成动态链接库.so,在Python中使用Ctypes调用该动态链接库中的函数

CMakeLists.txt

# src/CMakeLists.txt

# 查找源代码文件
set(SOURCE_FILES main.cpp)

# 生成可执行文件
add_executable(main ${SOURCE_FILES})
# 生成.so
add_library(ctrl SHARED ${PROJECT_SOURCE_DIR}/source/base_ctrl.cpp)
# link_directories(/home/xxx/Desktop/aheadform/xxxxx/Proj_01/lib)
target_link_libraries(ctrl /home/xxx/Desktop/aheadform/xxxxx/Proj_01/lib/ccc.so)

# 设置库文件的路径
link_directories(${CMAKE_SOURCE_DIR}/lib)

set(EYOU_LIB_PATH ${CMAKE_SOURCE_DIR}/lib)

# add_executable(test main.cpp)

target_link_libraries(main ${EYOU_LIB_PATH}/libeu_harmonic.so pthread)

add_executable用于生成可执行文件,也就是编译后的结果
add_library用于生成动态链接库
target_link_libraries用于告知CMake,生成动态链接库时,需要依赖什么库
link_directories用于告知CMake,依赖的库需要去哪里调用,我这里图方便,直接在target_link_libraries里就写了绝对地址

Python

C++

你可能感兴趣的:(编程语言,Cpython,c++,python,开发语言,linux)