【问题标题】:Python, SWIG and other strange thingsPython、SWIG 和其他奇怪的东西
【发布时间】:2011-01-27 09:00:22
【问题描述】:

我有一个 USB 模块的固件,我已经可以通过 Visual C 控制。现在我想将它移植到 python。为此,我需要用 c 编写的章鱼库。我找到了一个由 SWIG 创建的名为 octopus_wrap 的文件!

然后我找到了一个makefile,上面写着:

python2.5: 痛饮 -python -outdir ./ ../octopus.i gcc -fPIC -c ../../liboctopus/src/octopus.c gcc -fPIC -c ../octopus_wrap.c -I /usr/include/python2.5 gcc -fPIC -shared octopus_wrap.o octopus.o /usr/lib/libusb.so -o _octopus.so

python2.4: 痛饮 -python -outdir ./ ../octopus.i gcc -fPIC -c ../../liboctopus/src/octopus.c gcc -fPIC -c ../octopus_wrap.c -I /usr/include/python2.4 gcc -fPIC -shared octopus_wrap.o octopus.o /usr/lib/libusb.so -o _octopus.so

赢: gcc -fPIC -c ../../liboctopus/src/octopus.c -I /c/Programme/libusb-win32-device-bin-0.1.10.1/include gcc -fPIC -c octopus_wrap.c -I /c/Python25/libs -lpython25 -I/c/Python25/include -I /c/Programme/libusb-win32-device-bin-0.1.10.1/include gcc -fPIC -shared *.o -o _octopus.pyd -L/c/Python25/libs -lpython25 -lusb -L/c/Programme/libusb-win32-device-bin-0.1.10.1/lib/gcc

干净: rm -f 章鱼* _octopus*

安装_python2.4: cp _octopus.so /usr/local/lib/python2.4/site-packages/ cp octopus.py /usr/local/lib/python2.4/site-packages/

安装_python2.5: cp _octopus.so /usr/local/lib/python2.5/site-packages/ cp octopus.py /usr/local/lib/python2.5/site-packages/

我不知道如何处理这个问题,但据我所知 octopus.py 和 _octopus.so 是与 python 相关的结果输出文件吗?

幸运的是有人已经这样做了,所以我把这 2 个文件放到我的“python26/lib”文件夹中(希望它是 python 2.5 还是 2.6 无关紧要?!)

因此,当使用 USB 设备时,octopus.py 是可以使用的库! 导入此文件会产生几个问题:

>>> 
Traceback (most recent call last):
File "C:\Users\ameise\My Dropbox\µC\AVR\OCTOPUS\octopususb-0.5\demos\python    \blink_status.py", line 8, in <module>
from  octopus import *
File "C:\Python26\lib\octopus.py", line 7, in <module>
import _octopus
ImportError: DLL load failed: module not found.

这是相关的第 7 行:

import _octopus

所以考虑到 .so 文件有问题! 我的下一步可能是什么?

我知道这有很多令人困惑的东西,但我希望你们中的任何人都能给我带来一些启发!

你提前

【问题讨论】:

  • 所以 .so 文件与 unix 相关?好的。但是为什么要导入 .pyd 文件,以前从未见过: install_python2.5: cp _octopus.so /usr/local/lib/python2.5/site-packages/ cp octopus.py /usr/local/lib/python2.5 /site-packages/ 但我说导入的 _octopus 文件可能是编译器的输出文件是对的?!

标签: python usb wrapper swig


【解决方案1】:

您应该为 python2.6 -lpython26 链接和编译。 windows的文件扩展名也是.pyd no .so

【讨论】:

  • 我可以用 Visual Studio 重新编译吗?
  • 当然可以,swig生成.c文件后,你可以创建一个简单的setup.py来编译它见docs.python.org/distutils/setupscript.html
  • 一个菜鸟慢慢地哇!一步一步做什么。以及如何将 swig 和 VC 结合起来?你能解释一下吗?
猜你喜欢
  • 1970-01-01
  • 2012-08-25
  • 2014-05-26
  • 2017-12-08
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
相关资源
最近更新 更多