【发布时间】:2021-10-29 08:23:43
【问题描述】:
我正在关注 SWIG 教程,我目前在以下部分:“32.9.1 Converting Python list to a char **”。有问题的示例在我的机器上返回了 malloc 错误:
import example
example.print_args(["a","bc","dc"])
python(57911,0x10bd32e00) malloc: 对象 0x7f7ee0406b90 的 *** 错误: 被释放的指针未被分配 python(57911,0x10bd32e00) malloc: *** 在 malloc_error_break 中设置断点进行调试 157911 中止python 157911 中止python
该错误是意外的,因为这正是教程提供的代码。欢迎任何帮助!提前致谢
规格:
- MacOS 大苏尔
- Python 3.8
- C++17
这是我的 setup.py(整个 archive 用于重现性):
#!/usr/bin/env python
"""
setup.py file for SWIG example
"""
from distutils.core import setup, Extension
import os
import sys
import glob
# gather up all the source files
srcFiles = ['example.i']
includeDirs = []
srcDir = os.path.abspath('src')
for root, dirnames, filenames in os.walk(srcDir):
for dirname in dirnames:
absPath = os.path.join(root, dirname)
globStr = "%s/*.c*" % absPath
files = glob.glob(globStr)
includeDirs.append(absPath)
srcFiles += files
extra_args = ['-stdlib=libc++', '-mmacosx-version-min=10.7', '-std=c++17', '-fno-rtti']
os.environ["CC"] = 'clang++'
#
example_module = Extension('_example',
srcFiles, # + ['example.cpp'], # ['example_wrap.cxx', 'example.cpp'],
include_dirs=includeDirs,
swig_opts=['-c++'],
extra_compile_args=extra_args,
)
setup(name='example',
version='0.1',
author="SWIG Docs",
description="""Simple swig example from docs""",
ext_modules=[example_module],
py_modules=["example"],
)
【问题讨论】:
标签: python c++ swig swig-typemap