libsndfile - sf_open(): time.h 中的未定义引用

libsndfile - sf_open(): Undefined references in time.h

我正在使用 libsndfileportaudio 播放 .wav 文件中的音频,我得到一些奇怪的未定义引用(在 time.h...?)使用 sf_open(const char*, int, SF_INFO*) 时出现错误 在显示错误之前,这里是一些基本信息:我在 Windows 10 上使用 MinGW 3.21(由于 IDE 限制无法升级),我使用 CMake构建系统。我已验证传递给 sf_openconst char* 是一个有效的文件名,并且我已检查没有其他代码行导致此编译错误。事不宜迟,有一些可爱的错误:

libsndfile/lib/libsndfile.a(aiff.o): In function time':
c:/dwimperl/c/bin/../lib/gcc/i686-w64-mingw32
/4.4.7/../../../../i686-w64-mingw32/include/time.h:242: 
undefined reference to _time32'

这被打印了好几次,可能是因为函数 timesf_open 中被大量使用,虽然我不知道为什么。这也会发生:

In function `gmtime':
c:/dwimperl/c/bin/../lib/gcc/i686-w64-
mingw32/4.4.7/../../../../i686-w64-mingw32/include/time.h:240: 
undefined reference to `_gmtime32'

这些错误意味着 sf_opentime.h 之间没有相关性,但我什至尝试了以下,

#include<sndfile.h>

int main {
    sf_open(nullptr, 0, nullptr);
    return 0;
}

得到了同样的结果。我在与编译的二进制文件相同的目录中有 libsndfile-1.dll,并且正在链接到 libsndfile.alibsndfile.dll.a。我试过只链接到 libsndfile.a,结果相同。但是,我尝试只链接到 libsndfile.dll.a 并且程序编译但随后崩溃,说:

An error occured while using the portaudio stream
Error number: -9984
Error message: Incompatible host API specific stream info

我不确定这是否是另一个问题的问题,但我想我会提到它,看到 sf_open,错误的功能,似乎对流信息做了一些事情。无论如何,这是我所得到的。感谢您的帮助!

看我这么天才,一问一答,一不留神。有时我想知道我怎么还活着。无论如何,这很简单。不要 link libsndfile.a,只是 libsndfile.dll.a。就这样。 PortAudio 错误是完全不相关的。对不起,我的愚蠢,希望这对至少一个人有帮助...?