Boost.Python __init __()应该返回None,而不是'NoneType'

 LYJ189_163 发布于 2023-02-12 12:29

我有一大堆工作的C++代码,我想编写Python绑定.我正在尝试使用Boost.Python,因为它似乎是让这个工作最简单的方法,但它不合作.这是我正在尝试构建的扩展模块的代码的一部分:

BOOST_PYTHON_MODULE(libpcap_ext) {
    using namespace boost::python;
    class_("PacketEngine")
        .def("getAvailableDevices", &PacketEngine_getAvailableDevices);
}

Bjam似乎很痛苦并拒绝识别我的Pythonpath或允许我链接libpcap,所以我正在使用CMake.这是我的CMakeLists文件,可以导入和构建一切就好(按预期输出libpcap.so):

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
IF(NOT CMAKE_BUILD_TYPE)
  SET(CMAKE_BUILD_TYPE "DEBUG")
  #SET(CMAKE_BUILD_TYPE "RELEASE")
  #SET(CMAKE_BUILD_TYPE "RELWITHDEBINFO")
  #SET(CMAKE_BUILD_TYPE "MINSIZEREL")
ENDIF()

FIND_PACKAGE(Boost 1.55.0)
find_package(PythonLibs REQUIRED)
IF(Boost_FOUND)
  INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}" "${PYTHON_INCLUDE_DIRS}")
  SET(Boost_USE_STATIC_LIBS OFF)
  SET(Boost_USE_MULTITHREADED ON)
  SET(Boost_USE_STATIC_RUNTIME OFF)
  FIND_PACKAGE(Boost 1.55.0 COMPONENTS python)

  ADD_LIBRARY(pcap_ext MODULE PacketWarrior/pcap_ext.cc PacketWarrior/PacketEngine.h PacketWarrior/PacketEngine.cc PacketWarrior/Packet.h PacketWarrior/Packet.cc)
  TARGET_LINK_LIBRARIES(pcap_ext pcap)
  TARGET_LINK_LIBRARIES(pcap_ext ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
ELSEIF(NOT Boost_FOUND)
  MESSAGE(FATAL_ERROR "Unable to find correct Boost version. Did you set BOOST_ROOT?")
ENDIF()

ADD_DEFINITIONS("-Wall")

我的pcap.py文件试图利用该模块:

import libpcap_ext
engine = libpcap_ext.PacketEngine()
print engine.getAvailableDevices()

但每当我尝试运行该模块时,我都会收到以下错误:

Traceback (most recent call last):
  File "../pcap.py", line 2, in 
    engine = libpcap_ext.PacketEngine()
TypeError: __init__() should return None, not 'NoneType

我假设是因为Boost.Python尝试使用Python 3而我的系统默认是Python 2.7.3.我已经尝试更改我的user-config.jam文件(在我的boost_1_55_0目录中)指向Python 2.7并尝试构建:

# Configure specific Python version.
# using python : 2.7 : /usr/bin/python2.7 : /usr/include/python2.7 : /usr/lib ;

当我尝试使用bjam(大量警告)构建快速启动时,Boost.Python的安装说明[0]似乎失败了,所以我尝试按照Boost入门指令[1]来构建Python头文件二进制文件,我认为是什么导致了这个问题.关于如何解决这个问题的任何建议都是惊人的,我已经花了好几个小时.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有