gcc 使用支持ASIO的portaudio构建pyaudio

zengzsys  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(223)

我在win32上运行Python 2.7.3 [MSC v.1500 32位(英特尔)]。
我需要构建支持ASIO的portaudio,并将其绑定到pyaudio,以便在Windows 7下使用它。基本上,我想从python访问ASIO驱动程序,我发现这是一种方法。我正在遵循pyaudio网页http://people.csail.mit.edu/hubert/pyaudio/的手册。该手册相当过时,gcc不再支持-mno-cygwin标志。我所做的:
1.从他们的网页下载PyAudio-0.2.7
1.下载稳定的portaudio-v19 http://www.portaudio.com/download.html
1.删除了手册中的“-mno-cygwin”选项,并编译了portaudio(gcc版本4.5.3)
1.编辑了C:\Python27\Lib\distutils\cygwinccompiler.py并从文件中删除了“-mno-cygwin”标志。
1.我运行了建议的pyaudio编译,但出现gcc错误

$ ../Python27/python.exe setup.py build --static-link -cmingw32
running build
running build_py
creating build
creating build\lib.win32-2.7
copying src\pyaudio.py -> build\lib.win32-2.7
running build_ext
building '_portaudio' extension
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
creating build\temp.win32-2.7\Release\src
C:\MinGW\bin\gcc.exe -mdll -O -Wall -I./portaudio-v19\include/ -Ic:\Python27\inc
lude -Ic:\Python27\PC -c src/_portaudiomodule.c -o build\temp.win32-2.7\Release\
src\_portaudiomodule.o -fno-strict-aliasing
writing build\temp.win32-2.7\Release\src\_portaudio.def
C:\MinGW\bin\gcc.exe -shared -s build\temp.win32-2.7\Release\src\_portaudiomodul
e.o build\temp.win32-2.7\Release\src\_portaudio.def -Lc:\Python27\libs -Lc:\Pyth
on27\PCbuild -lwinmm -lpython27 -lmsvcr90 -o build\lib.win32-2.7\_portaudio.pyd
./portaudio-v19\lib/.libs/libportaudio.a -lwinmm
gcc: error: ./portaudio-v19\lib/.libs/libportaudio.a: No such file or directory
error: command 'gcc' failed with exit status 1

我假设portaudio编译失败了。我认为提到的libportaudio. a是一个linux文件。你能告诉我哪里出了问题吗?

x6492ojm

x6492ojm1#

但是http://www.lfd.uci.edu/~gohlke/pythonlibs/中的文件不支持ASIO,要获得ASIO支持,还需要获得ASIO SDK。我设法让它用visual studio 2010 x64编译,但仍试图弄清楚如何使它在实践中使用ASIO(输出仍然只有2个通道,而应该有4-8个我的卡

46scxncf

46scxncf2#

不幸的是,我也不能记录两个以上的轨道与PyAudio的建设从http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio。
所以我用Microsoft Visual Studio(免费版)编译了portaudio,根据
http://portaudio.com/docs/v19-doxydocs/compile_windows_asio_msvc.htmlhttp://portaudio.com/docs/v19-doxydocs/compile_windows.html显示器
请注意,我们必须从https://www.steinberg.net/developers下载ASIO SDK库以获得ASIO支持。
然后,我还使用portaudio_x64.dll(用MSVC编译)构建了pyaudio,如下所示:

python setup.py build_ext -I .\portaudio\include -L .\portaudio\mybuild\Release -l portaudio_x86
python setup.py install

这时我遇到了一条错误信息:

>>> import pyaudio
Could not import the PyAudio C module '_portaudio'.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\subf\AppData\Local\Programs\Python\Python310\Lib\site-packages\PyAudio-0.2.12-py3.10-win-amd64.egg\pyaudio.py", line 116, in <module>
    import _portaudio as pa
ImportError: DLL load failed while importing _portaudio: DLL load failed

我通过将portaudio DLL直接复制到pyaudio库的目录中来解决这个问题:

copy portaudio_x64.dll C:\Users\myid\AppData\Local\Programs\Python\Python310\Lib\site-packages\PyAudio-0.2.12-py3.10-win-amd64.egg

我成功地用pyaudio录制了两个以上的频道,更多的帮助将从https://stackoverflow.com/posts/74188301获得。

  • 谢谢-谢谢
wlzqhblo

wlzqhblo3#

这是因为在Windows上编译后,该文件实际上被称为libportaudio.dll.a,但即使重命名也不能解决问题。
安装pyaudio来与cygwin的python一起工作是另一回事,这就是我遇到的问题。

相关问题