(我在Windows上。)
我尝试构建pysox。因此我构建了libsox(SoX的一部分)。据说,pysox在你的链接路径中需要“libsox.so和libsox.a”。在构建libsox时,我得到了“libsox.a”,“libsox-1.dll”,“libsox.dll.a”,“libsox.la”,“libsox.lai”以及许多其他奇怪的文件。当我在链接路径中放置“libsox.a”时,先前显示的错误消失了。但是现在构建脚本在调用mingw32-gcc时出错:
C:\Programme\MinGW\bin\mingw32-gcc.exe -shared -s build\temp.win32-2.7\Release\pysox\sox.o build\temp.win32-2.7\Release\pysox\sox.def -LC:\Programme\Python\libs -LC:\Programme\Python\PCbuild -lsox -lpython27 -lmsvcr90 -o build\lib.win32-2.7\pysox\sox.pyd
build\temp.win32-2.7\Release\pysox\sox.o:sox.c:(.text+0x3a96): undefined reference to `sox_get_encodings_info'
build\temp.win32-2.7\Release\pysox\sox.o:sox.c:(.text+0x5035): undefined reference to `sox_get_encodings_info'
build\temp.win32-2.7\Release\pysox\sox.o:sox.c:(.text+0x795d): undefined reference to `bcopy'
build\temp.win32-2.7\Release\pysox\sox.o:sox.c:(.text+0xa8b3): undefined reference to `bcopy'
collect2: ld returned 1 exit status
error: command 'mingw32-gcc' failed with exit status 1
以下尝试无效:
我真的需要Windows上的“so”文件(我该如何获取)?或者必须改变什么?
答案 0 :(得分:1)
MinGW为每个动态链接库(DLL)使用静态接口库。 libsox.dll.a库是链接时需要的库,即需要复制到链接路径中的库。在运行时PATH中需要libsox-1.dll,但在链接时不需要。
在Windows平台上不需要.so文件。似乎静态库libsox.a中缺少某些符号,或者链接行中缺少库。 Windows平台不允许在DLL中使用未解析的符号,这与类似UNIX的.so平台相反。您可能必须在命令行中明确地提供包含sox_get_encodings_info
和朋友的库,记住链接器行的优先级。