Matlab 2017a -> 2018b. Доступ к .NET сборке разный?

Используя Matlab 2017a, я написал оболочку для использования аппаратного обеспечения векторной CAN. Он основан на vxlapi_NET от вектора.

В предыдущей версии мне удавалось вот так:

xlstatus = obj.fid.XL_OpenDriver();
if xlstatus == vxlapi_NET.XL_Status.XL_SUCCESS   .....

потому что xl_opendriver вернул что-то типа vxlapi_NET.XL_Status. Имеет смысл ...

Теперь, с 2018b, все выглядит совершенно иначе. XL_OpenDriver возвращает что-то типа XLDefine+XL_Status.

Кто-нибудь может объяснить, что здесь означает этот знак "плюс"? Я никогда раньше не видел ничего подобного в Matlab. Более того, я не нашел решения для перевода if xlstatus == vxlapi_NET.XL_Status.XL_SUCCESS во что-то совместимое с 2018b.

vxlapi_NET.XLDefine+XL_Status.XL_STATUS, конечно, не является допустимым выражением.

Это ошибка или почему все так по-другому?

Большое тебе спасибо!

Уверены ли вы? XLDefine+XL_Status не является допустимым именем типа. И MATLAB довольно хорош в обратной совместимости. У них обычно есть много версий, которые генерируют предупреждения перед удалением функции, и они обычно меняют имя функции, если хотят изменить ее возвращаемые значения. Вы просмотрели примечания к выпуску? Это изменение должно быть упомянуто там с инструкциями по совместимости.

Cris Luengo 11.01.2019 15:11

Я считаю себя сильным пользователем. Полностью согласен: никогда не сталкивался с проблемой обратной совместимости. Вот почему это моя первая публикация здесь, и я действительно сомневаюсь в себе. Нет идеи, как разместить здесь снимок экрана, но рабочая область показывает: Имя: xlstatus, Значение: 1x1 XLDefine + XL_STATUS. Также, если я посмотрю на методы, использующие libfunctionsview: «Плюс» везде. Наверное, это мингв сломан? Установка полностью новая.

André Kolbe 11.01.2019 15:26

xl_opendriver является частью оболочки .NET, предоставляемой вектором. Тем временем я получил ответ от службы поддержки Mathworks. Они подтвердили, что что-то изменилось: «+» в имени класса или перечисления указывает, что он вложен в другой класс. Вы не можете напрямую создать экземпляр вложенного класса или перечисления из .NET Assembly. Для этого вы должен использовать отражение. Интерфейс действительно изменился между выпусками ".

André Kolbe 15.01.2019 11:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я получил ответ от службы поддержки MathWorks. Они подтвердили, что что-то изменилось:

The '+' in the name of the class or enumeration indicates that it is nested within another class. You cannot directly instantiate a nested class or enumeration from a .NET Assembly. In order to do so, you must use reflection. The interface has indeed change between the releases.

Другие вопросы по теме