我使用libsndfile
和portaudio
從.wav
文件播放音頻和我收到一些奇怪的未定義引用錯誤使用時的sf_open(const char*, int, SF_INFO*)
前顯示錯誤,下面是一些基本信息:我在Windows 10上使用MinGW 3.21(由於IDE約束無法升級),CMake作爲我的編譯系統。我已驗證傳遞給sf_open
的const char*
是一個有效的文件名,我檢查了沒有其他代碼行導致此編譯錯誤。事不宜遲,有一些可愛的錯誤:libsndfile - sf_open():(?在<code>time.h</code> ...)在time.h中未定義的引用
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
,錯誤的功能,似乎做了一些與流信息。無論如何,這是我得到的。幫助表示讚賞!