Я новичок в python (но не в программировании) и мне нужно использовать функцию в COM-объекте (написанном на C ++). Определение функции выглядит следующим образом:
short GetNumber(short iStageIndex, short* sNumVal)
Возвращаемое значение которого указывает, был ли вызов успешным или нет, а sNumVal - номер, который меня интересует.
Я попытался запустить это с использованием Spyder (python 3.6) и параметры ref возвращаются в кортеже, поэтому его нужно вызывать следующим образом:
ret = NumSoilProfiles(0);
success = ret[0]
sNumVal = ret[1]
Теперь я пытаюсь использовать это в Динамо (часть Civil 3D), который использует Iron Python 2.7 и выше, похоже, больше не работает. Вышеуказанный вызов приводит к следующей ошибке:
StandardError: Ошибка при вызове NumSoilProfiles
Кортеж не возвращается, поэтому, чтобы избавиться от этой ошибки, я должен что-то передать в ко второму параметру:
sNumVal = 0
ret = NumSoilProfiles(0, sNumVal)
проблема в том, что sNumVal не устанавливается - нужно ли что-то делать, чтобы передать его по ссылке? Я долго пытался это найти, но пока не нашел ответа.