2009-05-12 7 views
6

Próbuję uruchomić program pierwotnie testowany na Matlab 6.5 na nowej wersji (R2009a) Program używa niektórych plików mex, i pojawia się następujący błąd podczas próby uruchomienia :działa stary plik mex na nowych wydaniach Matlab

??? Nieprawidłowy plik MEX "/normalizedCut/common_files/sparsifyc.mexglx": normalizedCut/common_files/sparsifyc.mexglx: symbol mxGetIr, wersja libmx.INTERNAL nie zdefiniowany w pliku libmx.so z odniesieniem do czasu łącza.

(kod Próbuję tun jest znormalizowana cięcie Shi & jabłkowy, i można je znaleźć tutaj: http://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip)

Gdy próbuję uruchomić kod w tym samym systemie, ale Matlab 2007a działa ok.

Czy jest jakiś problem z kompatybilnością wsteczną w roku 2009a? Czy są jakieś flagi w systemie, które mogę zmienić, aby pomóc w pracy?

Kiedy googlowałem, zobaczyłem kilka odniesień do zmiennej środowiskowej LD_LIBRARY_PATH, ale czego dokładnie nie można się było dowiedzieć.

Dzięki Yair

Odpowiedz

4

Kod źródłowy dla tych mex funkcji wydaje się być dostępny w „segmentacji obrazu z znormalizowanych cięć” źródło na tej stronie: http://www.cis.upenn.edu/~jshi/software/ (w podkatalogu specific_NcutImage_files w rozpakowanym .zip)

0

To dość powszechne, aby istniała problemów z uruchomieniem funkcji mex z różnymi wersjami Matlab. Błędy, które wyglądają, jakby były spowodowane zmianami API w Matlabie (choć to trochę mnie zaskakuje). Miałem najwięcej problemów z powodu niezgodności binarnych wywołanych przez zmiany w gcc. Sugerowałbym skontaktowanie się z Jiambo i zapytanie go, czy może zbudować nową wersję lub wydać źródło.

W najgorszym przypadku można spróbować ponownie wprowadzić te funkcje MEX. Znormalizowany algorytm cięcia jest bardzo prosty w Matlab (patrz: Shi and Malik paper). Przy nazwach funkcji mex wyglądają, jakby w większości powielały istniejącą funkcjonalność matlab (mnożenie macierzy, sparowanie macierzy). Istnieje niezerowa szansa, że ​​jeśli ponownie zaimplementujesz je jako zwykłe funkcje kodu m, to i tak będą one szybsze ze względu na obsługę wielordzeniową, która została dodana do Matlaba.