【问题标题】:libsndfile : Undefined referenceslibsndfile : 未定义的引用
【发布时间】:2016-03-18 04:06:51
【问题描述】:
  • 我已将 bin 文件夹添加到系统 PATH 以及“libsndfile-1.dll”到主目录 程序。

  • 我已链接包含目录并添加了“libsndfile-1.lib”库 来自代码块的库链接器。

  • 我已经从 dll 和原始定义文件中创建并链接了额外的 .as。因为否则它会抱怨。


在我发现头文件没有定义大量示例中隐含的函数之后。我运行了一个仅包含引用可用函数的程序。 https://github.com/michaelwu/libsndfile/blob/master/examples/sfprocess.c 当然,有些东西不会再起作用了,因为当我运行程序时,它抛出了运行时错误:应用程序无法正确启动(0xc000007b)


我现在错过了什么?

【问题讨论】:

  • 首先你必须确保命令行是正确的。您可以更改 CB 配置以显示命令行,它位于用户手册 (codeblocks.org/docs/manual_en.pdf)“1.11.6 编译器的扩展设置”中。另外我认为您可以为编译和链接提供自定义命令行(参见 1.9 3.5 和 3.6)。
  • 命令行似乎最终很长..可能是因为安装了 gtk 和几个模块。我能注意到的唯一不寻常的事情是它使用-ID-LD 而不是-I-L ..因此不寻常但没有错。
  • 您确认订单是否正确?无论如何,我建议你发布它。
  • 这个“警告:函数'sf_open_read'的隐式声明”意味着编译器找不到声明函数的头文件。它在此处搜索标题:D:\apps\libsndfile\include(D 只是驱动器名称)。检查此路径,看看是否有正确的 .h 文件。
  • 好吧,由于某种原因,头文件没有定义那个特定的函数,但还有很多其他类似的。所以我认为这些例子已经严重过时了。使用另一个函数,编译但抛出运行时错误:应用程序无法正确启动..

标签: c mingw windows-7-x64 undefined-reference libsndfile


【解决方案1】:

验证命令行,最好手动编译。

确保所有模块都来自 x64 位预编译(它们的大小略有不同)、静态和动态库,包括您制作的 .a。 当只有一个模块用于 x32 位系统而不是整个库时,通常会发生NTSTATUS 错误。 这在音频编程中确实很重要,因为它非常依赖于它,您可以从直接声音处理中得出结论。 所以这并不是图书馆的错。

不要用 MSYS 安装它。

..只要您从 CB 中链接了所有库,您就不必在命令行中附加 -lsndfile

【讨论】:

    【解决方案2】:

    您遇到的错误表明应用程序是 32 位并试图加载 64 位库(请参阅NTSTATUS),反之亦然。

    您应该安装正确的库:如果您的系统是 32 位,则安装 32 位版本;如果您的系统是 64 位,则安装 64 位版本。表格here好像两个版本都可以下载。

    【讨论】:

    • 那么解决办法是什么?
    • 我确定我已经下载了win7。但我会再次确认。这是有道理的。
    • 检查你的win7是64位还是32位。
    • 这是我第一次收到此错误。我的win7肯定是64位的。
    • 进程返回 -1073741701 (0xC000007B) 又得到了。确保我正在安装 libsndfile-1.0.26-w64-setup.exe
    【解决方案3】:

    订单很重要!

    你想使用:

    gcc -I D:\apps\libsndfile\include\ main.c -o testexec -L D:\apps\libsndfile\lib\ -lsndfile 
    

    供大家参考

    【讨论】:

    • 很遗憾,我只是把它客观化了。我使用 CB 的库链接器。 CB 没有这样的命令行,它让我对命令行的实际含义视而不见。
    • 尝试用斜杠替换反斜杠。 @Malina
    • 我尝试在 CB 外部编译,手动使用此命令行和链接器返回错误:“找不到 -lsndfile”
    • 如果库文件名为libsndfile-1.*你想使用-lsndfile-1@Malina
    • 还是找不到。这很奇怪,我自己安装了 GTK+3 以及模块 gtksourceview,但是我没有安装这个小库。
    猜你喜欢
    • 2016-04-02
    • 2016-11-17
    • 2012-06-29
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2011-10-26
    相关资源
    最近更新 更多