Форум сайта python.su
0
Здравствуйте,
есть скрипт на питоне,в который мне лезть нельзя,надо к нему написать библиотеку,я написала на шарпе - из другого приложения на шарпе она работает,а из питона не работает
Думаю что проблема может быть в несоответствии типов,прошу посмотреть
так выглядит функция на шарпе(в библиотеке),которую надо вызывать из питона:
public int SendString(string s, int port_, int font_)
так она вызывается из питона:
def SendStr(s, port_, font_): mydll = ctypes.WinDLL("Stella.dll") send = mydll.SendString mydll.SendString.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_int] mydll.SendString.restype = c_int st = s.encode('cp1251') i=2 count = 0 critcnt = 1 while i!=0 and count<critcnt: i=send(c_char_p(st),c_int(port_),c_int(font_)) и т.д.
Офлайн
88
Интересно, почему вы решили что это должно работать, ведь во всех талмудах .NET/C# объясняется разница между managed и unmanaged образами?
Воспользуйтесь http://www.google.ru/search?q=%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2+%D0%B8%D0%B7+managed+dll , или перепишите библиотеку для компиляции в нативный код, или рассмотрите взможности использования .NET реализаций питона.
Офлайн
253
ShamanПрактически не вариант. Любое достаточно сложное приложение использует компилированные модули (ведь автор тоже библиотеку делает). Эти модули NET реализация не поддерживает (не поддерживала пару лет назад когда я на это смотрел).
или рассмотрите возможности использования .NET реализаций питона
Shaman1. понять почему нужна именно библиотека а не питоновский модуль.
уже не знаю что делать(
Отредактировано doza_and (Авг. 18, 2014 09:59:16)
Офлайн
0
да,писать на шарпе не вариант,сижу переделываю на делфи,в принципе все равно на чем писать,но хорошо я знаю только шарп,но вот он отпадает,пишу на делфи
питон я вообще не знаю,и боюсь туда лезть и сломать что работает..до этого библ к питонскритпу этому была на делфи,так что надеюсь получится
Офлайн
88
doza_andЧто было до второго дотнета мне не известно, а в нём подключать обычные длл-ки проблемой не было.
Любое достаточно сложное приложение использует компилированные модули (ведь автор тоже библиотеку делает). Эти модули NET реализация не поддерживает (не поддерживала пару лет назад когда я на это смотрел).
valdМожно и так, только аккуратнее там со строковыми типами.
пишу на делфи
Офлайн
0
Shamanвот как раз с ними сейчас и втыкаюсь((((
Можно и так, только аккуратнее там со строковыми типами.
Офлайн
253
ShamanЯ правильно понимаю что в IronPython берем обычный пакет ну например numpy и ставим его в IronPython? Мне в это не особо верится т.к. из гугла получаю https://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net. т.е. Нужен порт и он в текущее время не поддерживается…
а в нём подключать обычные длл-ки проблемой не было
Офлайн
88
doza_andПрошу прощения - выше я не понял о которых именно модулях речь. Бинарные CPython-модули с IronPython конечно же несовместимы.
Я правильно понимаю что в IronPython берем обычный пакет ну например numpy и ставим его в IronPython?
Отредактировано Shaman (Авг. 18, 2014 18:42:35)
Офлайн
253
Кстати я не вижу причин почему нельзя было сделать поддержку бинарных модулей. Может со временем она и появится.
Офлайн