1

我正在尝试将 pyPortMidi 用于我为 OSX、win32 和 win64 构建的应用程序。我已经让它在 OSX 和 win32 上工作,但我一直试图让它在 win64 上工作。

pyPortMidi 是一个名为 PortMidi 的 C 库的包装器,可从PortMidi 源代码下载0.7 版和John Harrison 的网站下载0.9 版。我已经尝试了具有相同故障模式的两个版本。

首先,我使用面向 X64 的 MSVC++ 2008 Express 构建了 PortMidi。包含的测试程序可以工作并且能够与midi端口通信,所以我认为PortMidi构建很好。

接下来我构建了 pyPortMidi。对于 0.7 版,我不得不稍微修改 setup.py 文件以说明包含文件的正确位置(从 ../win32 移动到 ../pm_common)并且它构建时没有错误。虽然 0.7 版使用 cython 构建 _pyportmidi.c,但 0.9 版使用 pyrex 做同样的事情;为了让它工作,我必须使用使用 easy_install 安装的 pyrex 版本。它也没有错误地构建。

我可以将库导入 Python,但是当我第一次调用它时,它会立即使 Python 崩溃:

>>> import pypm
>>> pypm.Initialize()
Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: python.exe
  Application Version:  0.0.0.0
  Application Timestamp:    4e70d55f
  Fault Module Name:    pypm.pyd
  Fault Module Version: 0.0.0.0
  Fault Module Timestamp:   4f8383fc
  Exception Code:   c0000005
  Exception Offset: 0000000000009000
  OS Version:   6.1.7601.2.1.0.256.1
  Locale ID:    1033
  Additional Information 1: 0f1f
  Additional Information 2: 0f1f1099a7fb7a2294c21b52e8fe20f2
  Additional Information 3: 07a8
  Additional Information 4: 07a8c952d5efd7a04abd16111aad6ab0

有没有人让 pyPortMidi 在 X64 上运行?关于如何调试此问题的任何建议?

4

1 回答 1

2

更新的 pypm 模块以pygame.pypm的形式提供。使用来自http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame的win-amd64-py2.7 二进制文件,以下工作:

>>> from pygame import pypm
>>> pypm.Initialize()
于 2012-04-11T18:53:24.930 回答