Глобальные переменные Matlab очень странно ведут себя в функциях DLL.
У нас есть функция DLL. Например:
extern "C" MATLABLIB_API dllexample(*double x, *double globalmat);
И вызвать DLL через обычную процедуру:
calllib('MATLABLIB', 'dllexample', x, LibPointerforGlobalMat)
Где globalmat — указатель на глобальную матрицу, хранящуюся в рабочей области matlab с именем globalmat. Его данные будут обновляться различными потоками, созданными в DLL, а затем использоваться для дальнейших вычислений в DLL.
Однако возвращенные результаты очень странные; похоже, что функции DLL вообще не обновляли globalmat.
Но DLL прекрасно работает при вызове любыми программами на C ++. Мне просто интересно, почему?
Задача ещё не решена.
Других решений пока нет …