Ошибка при связывании mex-файлов в алгоритме Max-flow / min-cut - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь реализовать подход "Техника сегментации объектов на основе GrabCut" в MATLAB. Для минимизации функции энергии случайных полей Маркова я использую стандартный алгоритм Max-flow / min-cut, как показано здесь: http://vision.csd.uwo.ca/code/

Вопрос: Когда я пытаюсь создать mex-файл для вызова функций создания и минимизации графика в MATLAB, я получаю следующую ошибку:

Неопределенные символы: "Graph :: Graph (int, int, void () (char ))", на который ссылаются из: _mexFunction in GraphTest.o

ld: символ (ы) не найден collect2: ld вернул 1 статус выхода

mex: сбой ссылки "GraphTest.mexmaci64".

Мой код действительно очень прост и просто скопировал часть кода, упомянутого в файле README, следующим образом:

#include "mex.h"
#include <stdio.h>
#include <math.h>
#include "graph.h"

void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[]) 
{    
    typedef Graph<int, int, int> GraphType;
  GraphType *g = new GraphType(/*estimated # of nodes*/ 2, /*estimated # of edges*/1); 
}

Я был бы очень признателен, если бы кто-нибудь, кто использовал этот пакет ранее или сталкивался с подобной ошибкой, мог бы дать некоторое представление о проблеме.

Заранее спасибо!

1 Ответ

2 голосов
/ 02 мая 2011

Полагаю, вы компилируете с помощью Matlab?

Попробуйте:

mex GraphTest.cpp graph.cpp

Полагаю, ваш файл шлюза mex - GraphTest.cpp.Любые зависимости вы можете просто пометить в конце.Это работает достаточно хорошо для простых проектов.Когда он станет больше, вы захотите переключиться на реальную систему сборки с зависимостью.Я предпочитаю CMake.

...