Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> python, ctypes, callback: access violation вызова 
:(
    Опции темы
resurtm
Дата 19.7.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.1.2009

Репутация: нет
Всего: 2



Пытаюсь передать Си-функции указатель на функцию-callback из python. Почему-то не получается разобраться -- вызов callback вылетает с access violation внутри библиотеки.

Код использования ctypes (в body.pointer при вызове self._cdll.NewtonBodySetForceAndTorqueCallback точно правильный указатель -- проверил):

Код

from ctypes import *

# ...

class NewtonBody(Structure):
   def __init__(self, pointer = 0):
      self.pointer = pointer   

# ...

class Newton:
   def __init__(self):
      self._cdll = CDLL('newton.dll')
      self.world = NewtonWorld()

# ...

   # NewtonBodySetForceAndTorqueCallback
   def bodySetForceAndTorqueCallback(self, body):
      CALLBACK = CFUNCTYPE(c_int, POINTER(NewtonBody), c_float, c_int)
      def callback(a, b, c):
         print '1'
         return 0
      self._cdll.NewtonBodySetForceAndTorqueCallback(body.pointer, CALLBACK(callback))
      return None


Traceback:

Код

Traceback (most recent call last):
  File "Newton.py", line 119, in <module>
    newton.update(10.5)
  File "Newton.py", line 42, in update
    self._cdll.NewtonUpdate(self.world.pointer, c_float(timestep))
WindowsError: exception: access violation reading 0x3C888899


Тип-указатель на функцию в Си и прототип функции, в которую пытаюсь передать callback:

Код

typedef void (*NewtonApplyForceAndTorque) (const NewtonBody* body, dFloat timestep, int threadIndex);

// ...

NEWTON_API void  NewtonBodySetForceAndTorqueCallback (const NewtonBody* body, NewtonApplyForceAndTorque callback);


Что может быть не так?
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.