Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2014 14:58:21

igorexa
Зарегистрирован: 2014-04-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функций из dll

from ctypes import *
from comtypes.client import CreateObject
lib = oledll.LoadLibrary('mydll.dll')
mydll = CreateObject('mydll.mydll')
mydll.funInit

Получаю ошибку AttributeError: funInit

Подскажите, что не так?

Офлайн

#2 Апрель 27, 2014 15:48:40

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Вызов функций из dll

В комовских dll нет ничего полезного с точки зрения импорта функций. Можете загрузить depends, или dumpbin, просмотреть ими свои dll и убедиться в этом. Не путайте ole/com/dot с обычными динамическими библиотеками.

p.s.
Микрософт их называет *.dll для запутывания публики, и 3 названия для одной технологии тоже похоже для запутывания.



Отредактировано doza_and (Апрель 27, 2014 15:52:16)

Офлайн

#3 Апрель 27, 2014 15:59:39

igorexa
Зарегистрирован: 2014-04-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функций из dll

И все-таки, решение данной проблемы есть?

Офлайн

#4 Апрель 27, 2014 18:06:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Вызов функций из dll

igorexa
решение данной проблемы есть?
1 Если нет документации или примера использования то … очевидно решения нет.
2 я не углядел откуда вы взяли:
lib = oledll.LoadLibrary('mydll.dll')
может оно и правильно, но я в документации не нашел.
3 Можно попробовать pywin32 http://sourceforge.net/projects/pywin32/files/pywin32/
сравнить поведение. Может чего и станет яснее.



Офлайн

#5 Апрель 27, 2014 21:05:41

igorexa
Зарегистрирован: 2014-04-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функций из dll

doza_and
2 я не углядел откуда вы взяли:
lib = oledll.LoadLibrary('mydll.dll')
может оно и правильно, но я в документации не нашел.
Взял отсюда ТЫЦ

Использование Pywin32 помогло, функции вызываются, результат возвращают верный
from ctypes import *
from comtypes.client import CreateObject
import win32com.client
lib = oledll.LoadLibrary('mydll.dll')
mydll = win32com.client.Dispatch('mydll.mydll')
mydll.funInit

Спасибо, буду разбираться дальше…


Офлайн

#6 Апрель 28, 2014 20:31:12

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Вызов функций из dll

igorexa
Спасибо, буду разбираться дальше…
Успехов. oledll просто обеспечивает специальные соглашения о вызовах…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version