libsndfile-sf_open():time.h中未定义的引用
libsndfile - sf_open(): Undefined references in time.h
我正在使用libsndfile
和portaudio
播放.wav
文件中的音频,在使用sf_open(const char*, int, SF_INFO*)
时,我收到了一些奇怪的未定义引用(在time.h
…?中)错误。在显示错误之前,这里有一些基本信息:我在Windows 10上使用MinGW 3.21(由于IDE限制而无法升级),CMake是我的构建系统。我已经验证了传递给sf_open
的const 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'
这被打印了好几次,可能是因为函数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
我不确定这是否是另一个问题,但我想我应该提到它,因为sf_open
,这个有缺陷的函数,似乎对流信息有影响。不管怎样,这是我所能做到的。感谢您的帮助!
看看我是个天才,问了问题却没有注意到。有时我想知道我怎么还活着。无论如何,这很简单。不要链接libsndfile.a
,只链接libsndfile.dll.a
。仅此而已。PortAudio错误完全无关。对不起你的愚蠢,希望这至少能帮助一个人。。。?
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用