Как перейти по ссылке на библиотеку COM - PullRequest
0 голосов
/ 16 марта 2020

Я новичок в 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 не устанавливается - нужно ли что-то делать, чтобы передать его по ссылке? Я долго пытался это найти, но пока не нашел ответа.

...