【发布时间】:2013-08-17 14:18:43
【问题描述】:
我有一个可以工作的 c++ 代码,我想将它包装到 Windows XP 和 Python 2.7 上的 python 模块中。我以前从未这样做过,所以我研究了 swig 和 distutils。
我创建了一个接口文件和一个 setup.py 并使用编译
python setup.py build_ext -c mingw32
脚本从我的module.i 和module.cpp 文件创建module_wrap.cpp,然后创建module_wrap.o 和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 似乎试图导出这个init,因为它包含
LIBRARY _module.pyd
EXPORTS
init_module
显然这不起作用,但我不知道为什么。有谁能帮帮我吗?
【问题讨论】:
-
init_module是在C++中定义的吗?
-
这个函数应该是swig定义的吧? module_wrap.cpp 不包含这样的功能。编辑:知道这种行为可能来自哪里吗?
标签: python windows python-2.7 swig distutils