Функция Mex не обновляется после перекомпиляции

У меня есть простая функция mex, которая вызывает другую функцию C ++ из библиотеки. Я компилирую исходный код с помощью

mex -cxx mymexfunction.cpp -I/some/include -L/some/lib -lmylib

Библиотека mylib является динамической (.so) и связана с некоторыми другими библиотеками (boost, OpenCV и некоторыми другими). ​​

Проблема, с которой я столкнулся, заключается в том, что однажды я Вызывали функцию mymexfunction один раз, она не будет обновлена, когда я перекомпилирую исходный код. Я пробовал

clear
clear all
clear mex
clear functions
clear fun('mymexfunction')
munlock('mymexfunction')
unloadlibrary('mymexfunction')

... но ничего не помогает! Мне нужно перезапустить Matlab, чтобы увидеть обновленную функцию mex. Даже если Я удаляю скомпилированный файл mex и перекомпилирую, я все еще получаю старую версию функции mex (не на диске, а в памяти).

Все в порядке, если я не ссылаюсь на mylib, но я понятия не имею, что может быть виновником, препятствующим обновлению. К сожалению, библиотека слишком велика и слишком переплетена, чтобы удалять отдельные модули один за другим.

Существуют ли какие-либо известные условия, при которых h может вызвать такие проблемы?

Пояснение:

Я обновляю только содержимое функции mex, а не библиотеку.

Обновление:

Он работает под Ubuntu 11.04 с Matlab R2011a! Я попытался воспроизвести ту же среду на моем компьютере OpenSUSE (R2011a, Boost 1.42, OpenCV 2.2, динамически связанный, ...), но все равно не повезло. Итак, я прихожу к выводу, что на самом деле с моей библиотекой все в порядке (иначе она не работала бы под Ubuntu), но это должно быть некоторая коллизия зависимостей и внутренних библиотек Matlab. Я официально сдаюсь. Преторианец и Амро, спасибо за вашу помощь!

7
задан Martin 11 August 2011 в 19:35
поделиться