Как получить доступ к глобальной переменной, определенной в скомпилированной динамической библиотеке из c ++ - PullRequest
0 голосов
/ 05 марта 2019

Я новичок в программировании, я пытаюсь использовать python для доступа к глобальной переменной, определенной в скомпилированной динамической библиотеке, скомпилированной в c ++.

int acc;
void Cassie2d::Step(ControllerTorque* action)
{
  dyn_model_.setState(mj_data_->qpos, mj_data_->qvel);
  dyn_state_.UpdateDynamicState(&dyn_model_);

  mju_copy(mj_data_->ctrl, action->torques, nU);
  mj_step(mj_model_, mj_data_);
  acc = mj_data_->qacc;
  Render();
}

Код выше - это код c ++, я определяю глобальныйпеременная (int acc) для доступа к данным mj qacc, как только я скомпилировал весь код c ++ и сформировал библиотеку .so, я пытаюсь использовать переменную acc в моем коде на python, однако acc не существует, кто-нибудь может сказатьмне проблема?

Или есть какой-нибудь хороший способ определить глобальную переменную, в которой код Python может получить доступ к библиотеке и найти глобальную переменную?

1 Ответ

0 голосов
/ 05 марта 2019

Обычно, когда вы хотите совместно использовать глобальную переменную в различных файлах в проектах C / C ++, вы добавляете ключевое слово extern в декларацию, чтобы расширить видимость переменной для всей разрабатываемой вами программы.

extern int acc;

Что касается доступа к библиотекам C ++ и их переменным из Python, может быть, эта ссылка может быть полезной Вызов C / C ++ из Python?

...