Typedefs включены, но не функции - PullRequest
0 голосов
/ 23 ноября 2011

Я пишу некоторый код, который использует библиотеку C, предоставленную MATLAB (для извлечения данных из файлов * .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;
}

Спасибо! Cameron

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

«неопределенная ссылка» обычно является ошибкой компоновщика. Это не проблема заголовочного файла. Вы должны указать компоновщику связать библиотеку MATLAB (или выделенный объект) с вашей программой.

Не знаю, как это сделать в Code :: Blocks. В документации Code: Blocks это описано здесь .

0 голосов
/ 23 ноября 2011

Вы проверили содержимое mat.h?Это объявляет matOpen()?Кроме того, возникает ли ошибка при компиляции или компоновке?Если это на этапе компоновки, вам, вероятно, нужно обратиться к библиотеке, которая содержит реализацию matOpen() (.lib в Windows или .a в Unix).Файл .h только объявляет функцию.

...