包含Typedef,但不包括函数

时间:2011-11-22 20:41:26

标签: c function matlab include codeblocks

我正在编写一些使用MATLAB提供的C库的代码(从* .mat文件中提取数据)。在我的IDE(Code :: Blocks)中,我已经包含了包含必要的“mat.h”的文件夹,该文件夹位于网络驱动器上。当我这样做时,我的代码识别mat.h中定义的类型,但每当我从文件调用函数时,我都会收到“未定义的引用”错误。这与MathWorks提供的示例代码的情况相同。什么样的问题通常会导致这种情况?

#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;
}

谢谢! 卡梅伦

2 个答案:

答案 0 :(得分:2)

“undefined reference”通常是链接器错误。这不是头文件的问题。您需要告诉链接器将MATLAB的库(或专用对象)链接到您的程序。

不知道在Code :: Blocks中如何做到这一点。在Code:Blocks文档中,它被描述为here

答案 1 :(得分:0)

你检查过mat.h的内容吗?它是否声明matOpen()?此外,编译或链接时是否发生错误?如果是在链接阶段,您可能需要引用包含matOpen()(Windows中的.lib或Unix中的.a)实现的库。 .h文件只声明函数。