2011-11-22 111 views
0

我正在編寫一些使用MATLAB提供的C庫(從* .mat文件中提取數據)的代碼。在我的IDE(Code :: Blocks)中,我包含了包含必需的「mat.h」的文件夾,它位於網絡驅動器上。我的代碼識別mat.h中定義的類型,當我這樣做時,但每當我從文件中調用函數,我得到一個「未定義的引用」錯誤。 MathWorks提供的示例代碼的情況也是如此。什麼樣的問題通常會導致這種情況?包含Typedefs,但不包含函數

#include "mat.h" 
int main (void) { 
    MATFile *pmat; // Compiles only when compiler is told to search in mat.h directory 
    pmat = matOpen("example_filename", "r"); // Never compiles 
    return 0; 
} 

謝謝! Cameron

回答

0

您是否檢查過mat.h的內容?它是否聲明matOpen()?另外,編譯或鏈接時會發生錯誤嗎?如果在鏈接階段,您可能需要引用包含matOpen()(在Windows中爲.lib,或在Unix中爲.a)實現的庫。 .h文件只聲明該函數。

+0

謝謝是的,這是一個鏈接器問題! – user1060598

2

「未定義的參考」通常是鏈接器錯誤。這不是頭文件的問題。您需要告訴鏈接器將MATLAB庫(或專用對象)鏈接到您的程序。

不知道這是如何在Code :: Blocks中完成的。在Code:Blocks文檔中,它被描述爲here

+0

謝謝是的,這是一個鏈接器問題! – user1060598