2015-12-12 44 views
0
  • 我已经将bin文件夹添加到系统PATH以及将“libsndfile-1.dll”添加到程序的主目录 。libsndfile:未定义的引用

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

  • 我制作并链接了额外的.a s从dll和原始定义文件。因为它会抱怨,否则。


后我发现,头文件没有定义的例子中大量隐含的功能。我跑了一个程序,只包含指可用的功能。 https://github.com/michaelwu/libsndfile/blob/master/examples/sfprocess.c 当然,事情不会再工作,因为当我跑它扔运行时错误的程序:应用程序无法正常启动(0xc000007b)


什么我现在还缺什么?

+0

首先您必须确保命令行是正确的。您可以更改CB配置以向您显示命令行,它位于用户手册(http://www.codeblocks.org/docs/manual_en.pdf)“1.11.6编译器的扩展设置”中。另外我认为你可以为编译和链接提供自定义命令行(参见1.9 3.5和3.6)。 –

+0

命令行似乎最终很长..也许,因为安装了gtk和几个模块。我可以注意到的唯一不寻常的事情是,它使用'-ID'和'-LD'代替'-I'和'-L' ..虽然不常见但是没错。 – Malina

+0

您是否认为该订单是正确的?无论如何,我建议你发布它。 –

回答

1

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

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

请勿将其与MSYS一起安装。

..并且您不必在命令行中附加-lsndfile,只要您链接了CB内的所有库即可。

0

订单很重要!

你想使用:

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

供您参考

+0

不幸的是,我只是将它物化了。我使用CB的库链接器。 CB没有这样的命令行,它让我对命令行实际上的东西蒙上了一层阴影。 – Malina

+0

尝试用斜杠代替反斜杠。 @Malina – alk

+0

我试图编译外部CB,手动使用此命令行和链接器返回错误:“can not find -lsndfile” – Malina

1

你遇到指出应用程序中的错误是32位,并试图加载一个64位库(s ee NTSTATUS)或反之亦然。

您应该安装正确的库:32位版本(如果您的系统是32位)或64位版本(如果您的系统是64位)。表格here似乎可以下载这两个版本。

+0

那么解决方案是什么? – Malina

+0

@Malina更新回答问题 –

+0

我相信我已经下载了win7。但我会再次确认。这说得通。 – Malina