#matlab #exception #dll
#matlab #исключение #dll
Вопрос:
Вот краткое изложение того, что произошло: по сути, я пытаюсь переписать программу MATLAB в программу на C #, где обе они использовали функцию, реализованную в скомпилированной библиотеке VS.
Для Matlab:
val = MyDLL.MyFunc(int32(a),int32(b),int32(c),int32(d));
Где:
MyDLL= actxserver('MyLib.MyClass');
Как и в C #, это прямой вызов функции:
obj = new MyLib.MyClass;
val = obj.MyFunc(int32(a),int32(b),int32(c),int32(d));
Однако в программе C # будет вызвано исключение из myFunc, но в программе MATLAB ничего не происходит. Поскольку они, по сути, вызывают одну и ту же функцию из одной и той же библиотеки, я думаю, может ли это быть причиной того, что MATLAB фактически не реагирует на исключение, вызванное из внешней библиотеки?
Любой совет был бы полезен, спасибо!
P.S.: Все аргументы совпадают друг с другом, и обе программы абсолютно вызывают одну и ту же функцию.
Комментарии:
1. Поскольку MATLAB не является стандартным вводом-выводом, вы не можете создавать стандартные исключения ввода-вывода. Есть способы сделать это с помощью библиотеки mex, но вам нужно будет заменить исключения в вашем C # на исключения mex.
2. Спасибо, Андер, в таком случае, как MATLAB тогда обработает эту строку кода? Будет ли он просто игнорировать это и продолжать? Например, в моем примере кода значение val будет просто присвоено 0? Я спросил об этом, потому что хочу убедиться, действительно ли это исключение происходит как в MATLAB, так и в C #, или оно просто игнорируется MATLAB.
3. Я думаю, что исключение должно произойти, так как это вызовет завершение кода. MATLAB обнаружит, что все, что он вызвал, закончилось, и продолжит.