使用 SWIG 构建错误

Posted

技术标签:

【中文标题】使用 SWIG 构建错误【英文标题】:build error with SWIG 【发布时间】:2018-07-31 12:12:42 【问题描述】:

我正在尝试开始使用 SWIG 构建 Python 扩展,但我立即发现了一个错误。可能解决方法很简单,但是我还没有找到解决方法。

我想包装一个简单的 C add() 函数:

/* sample.h */
extern int add(int, int);

我的 sample.i 文件是:

// sample.i - Swig interface
%module sample
%
#include "sample.h"
%

我的 setup.py 文件是:

# setup.py
from distutils.core import setup, Extension
setup(name='sample',
  py_modules=['sample.py'],
  ext_modules=[
  Extension('_sample',
  ['sample_wrap.c'],
  include_dirs = [],
  define_macros = [],
  undef_macros = [],
  library_dirs = [],
  libraries = ['sample']
  )
 ]
)

然后我尝试通过运行来编译扩展模块:

python setup.py build_ext --inplace

但我从链接器收到一个错误,指出 sample.lib 丢失。

【问题讨论】:

创建一个minimal reproducible example。您是否构建了 sample.lib? 【参考方案1】:

了解这个问题。 sample.I 中的库行是不需要的。 问题解决了。

【讨论】:

以上是关于使用 SWIG 构建错误的主要内容,如果未能解决你的问题,请参考以下文章

Swig Perl:错误的 ELF 类

Python 错误:在 SWIG 生成的 C++ 模板代码模块中未定义构造函数

CMake、SWIG 和共享库

在 OSX 下使用 SWIG 时出现致命的 Python 错误

模板包装上的 SWIG 错误

无法使用 SWIG 在 Python 中实例化 C++ 类(获取属性错误)