2015-12-12 95 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