2

我有一个可用的 c++ 代码,我想将它包装到 Windows XP 和 Python 2.7 上的 python 模块中。我以前从未这样做过,所以我研究了 swig 和 distutils。

我创建了一个接口文件和一个 setup.py 并使用编译

python setup.py build_ext -c mingw32

该脚本module_wrap.cpp从我的module.iandmodule.cpp文件创建 a ,然后创建 amodule_wrap.o和 a module.o。的创建module.o为未使用的变量和不推荐使用的 char* 创建了一堆警告,但它似乎有效。因为 C++ 代码不是我的,所以我现在不想进入这些内容。

最后一步是执行

g++.exe -shared -s build\temp.win32-2.7\Release\module_wrap.o build\temp.win32-2.7\Release\module.o build\temp.win32-2.7\Release\_module.def -LC:\Programme\Python27\libs -LC:\Programme\Python27\PCbuild -lpython27 -o build\lib.win32-2.7\_module.pyd

我明白了

Cannot export init_module: symbol not defined
error: command 'g++' failed with exit status 1

我现在用谷歌搜索了很多,我只是找不到解决这个问题的方法。之前创建的_module.def似乎试图导出这个初始化,因为它包含

LIBRARY _module.pyd
EXPORTS
init_module

显然这不起作用,但我不知道为什么。有谁可以帮我离开这里吗?

4

1 回答 1

1

我想到了。问题是 swig 的(未发布的)接口文件module.i。在那里我命名了模块%module usemodule,而在setup.py我命名了模块name=module。这样 swig 创建了一个 init_function,它与创建的模块所期望的名称不匹配。最后:只是一个错字...

不过还是感谢您的支持!

于 2013-08-16T07:33:26.123 回答