我正在使用libsndfile
和portaudio
来播放来自.wav
文件的音频,并且我得到一些奇怪的未定义引用(在time.h
...?)错误使用sf_open(const char*, int, SF_INFO*)
在显示错误之前,这里有一些基本信息:我在Windows 10上使用MinGW 3.21(由于IDE限制而无法升级),CMake作为我的构建系统。我已经验证传递给const char*
的{{1}}是一个有效的文件名,我检查过没有其他代码行导致此编译错误。不用多说,有一些可爱的错误:
sf_open
这是多次打印,可能是因为函数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'
在time
中被大量使用,尽管我还没有找到原因。这也发生了:
sf_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_open
之间没有相关性,但我甚至尝试了以下内容,
time.h
得到了同样的结果。我的#include<sndfile.h>
int main {
sf_open(nullptr, 0, nullptr);
return 0;
}
与我编译的二进制文件位于同一目录中,并且链接到libsndfile-1.dll
和libsndfile.a
。我只尝试使用相同的结果链接到libsndfile.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
似乎对流信息做了些什么。无论如何,这是我已经得到的。感谢帮助!
答案 0 :(得分:0)
看着我是这样一个天才,通过询问而不是注意来回答这个问题。有时我想知道我还活着。无论如何,这很简单。请勿关联libsndfile.a
,仅关联libsndfile.dll.a
。就这样。 PortAudio错误完全不相关。抱歉白痴,希望这对至少一个人有帮助......?