【问题标题】:Couldn't make swig wrapper with CMake无法使用 CMake 制作 swig 包装器
【发布时间】:2016-12-08 12:57:35
【问题描述】:

大家好,我想用 CMake 构建 python swig 包装器。我在制作过程中有以下问题:

/usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC

这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})

FIND_PACKAGE(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})

SET(CMAKE_SWIG_FLAGS "-Wall" "-c++")

SET_SOURCE_FILES_PROPERTIES(feature.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(feature.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE(feature_wrapper python feature.i)
SWIG_LINK_LIBRARIES(feature_wrapper ${PYTHON_LIBRARIES})

【问题讨论】:

    标签: python c++ cmake swig


    【解决方案1】:

    在您的 CMakeLists.txt 文件中,添加以下行:

    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    

    并将以下行替换为:

    SWIG_ADD_MODULE(feature python feature.i feature.cxx)
    SWIG_LINK_LIBRARIES(feature ${PYTHON_LIBRARIES})
    

    然后你可以通过做检查它

    python
    >>> import feature
    >>> print dir(feature)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多