【问题标题】:Do I need an "so" file or what's wrong?我需要一个“so”文件还是出了什么问题?
【发布时间】:2012-04-29 00:31:19
【问题描述】:

(我在 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

以下尝试无效:

  • 将“libsox-1.dll”放在链接路径中
  • 将其重命名为“libsox.dll”
  • 将其重命名为“libsox.so”
  • 将与“libsox.a”一起生成的所有文件放在链接路径中

我真的需要 Windows 上的“so”文件吗(我如何获得它)?或者有什么需要改变的?

【问题讨论】:

    标签: c build mingw ld


    【解决方案1】:

    MinGW 为每个动态链接库 (DLL) 使用一个静态接口库。 libsox.dll.a 库是您在链接时需要的库,即需要将其复制到链接路径中。 libsox-1.dll 在运行时在 PATH 中是必需的,但在链接时不需要。

    在 Windows 平台上您不需要 .so 文件。静态库 libsox.a 中似乎缺少某些符号,或者链接行中缺少库。与类 UNIX 的 .so 平台相反,Windows 平台不允许 DLL 中存在未解析的符号。您可能必须在命令行上显式提供包含 sox_get_encodings_info 和朋友的库,记住链接器行的优先级。

    【讨论】:

    • 我在 Python 的 libs 目录中将“libsox.a”替换为“libsox.dll.a”。但错误仍然存​​在。
    • @rynd:sox_get_encodings_info 符号在哪里定义?
    • 我使用了更新版本的 sox.h,我必须将其复制到 Python 包含目录。在较新版本中,名称 sox_encodings_info 已更改为 sox_get_encodings_info。所以现在我又遇到了一个老问题,这个问题在新版本的 sox.h 中得到了解决,我在这里描述了:stackoverflow.com/questions/10162636/…
    • 我现在尝试构建 sox-14.4.0 和 sox-14.3.2 而不是 sox-14.3.0,但是出现了下一种错误。我的防病毒软件将“conftest.exe”声明为恶意软件,它是在运行配置脚本时创建的。我为它设置了一个例外,我能够编译它。
    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2011-04-17
    • 2013-06-03
    • 2010-09-07
    • 2014-07-03
    相关资源
    最近更新 更多