Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2014 08:17:28

vald
Зарегистрирован: 2014-08-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

тип ctypes.c_char_p (аналог в C#)

Здравствуйте,
есть скрипт на питоне,в который мне лезть нельзя,надо к нему написать библиотеку,я написала на шарпе - из другого приложения на шарпе она работает,а из питона не работает
Думаю что проблема может быть в несоответствии типов,прошу посмотреть
так выглядит функция на шарпе(в библиотеке),которую надо вызывать из питона:

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_)) и т.д.

может тип string и c_char_p не соотв-ют др др,уже не знаю что делать(
питон не знаю совсем,уже думаю может библиотеку на нем писать,может тогда подскажете хороший тьюториал как написать библиотку на питоне (у меня Python32)??

Офлайн

#2 Авг. 18, 2014 08:39:54

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

тип ctypes.c_char_p (аналог в C#)

Интересно, почему вы решили что это должно работать, ведь во всех талмудах .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 реализаций питона.

Офлайн

#3 Авг. 18, 2014 09:51:32

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

тип ctypes.c_char_p (аналог в C#)

Shaman
или рассмотрите возможности использования .NET реализаций питона
Практически не вариант. Любое достаточно сложное приложение использует компилированные модули (ведь автор тоже библиотеку делает). Эти модули NET реализация не поддерживает (не поддерживала пару лет назад когда я на это смотрел).

:) из двух десятков знакомых мне программистов шарполюбителей, только один знал как сделать обычную динамическую библиотеку.

:) С моей точки зрения шарп язык для написания виндового gui приложения. Исходя из этого считаю шарп неудачным выбором для создания библиотеки.

Если вы объясните публике что вы хотите за библиотеку для питона создать и почему это надо делать на шарпе вам смогут дать более дельные советы, может даже скажут что библиотека с такой функциональностью уже есть.

Shaman
уже не знаю что делать(
1. понять почему нужна именно библиотека а не питоновский модуль.
2. если нужна то написать ее на c/c++



Отредактировано doza_and (Авг. 18, 2014 09:59:16)

Офлайн

#4 Авг. 18, 2014 11:15:30

vald
Зарегистрирован: 2014-08-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

тип ctypes.c_char_p (аналог в C#)

да,писать на шарпе не вариант,сижу переделываю на делфи,в принципе все равно на чем писать,но хорошо я знаю только шарп,но вот он отпадает,пишу на делфи
питон я вообще не знаю,и боюсь туда лезть и сломать что работает..до этого библ к питонскритпу этому была на делфи,так что надеюсь получится

Офлайн

#5 Авг. 18, 2014 12:54:56

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

тип ctypes.c_char_p (аналог в C#)

doza_and
Любое достаточно сложное приложение использует компилированные модули (ведь автор тоже библиотеку делает). Эти модули NET реализация не поддерживает (не поддерживала пару лет назад когда я на это смотрел).
Что было до второго дотнета мне не известно, а в нём подключать обычные длл-ки проблемой не было.
vald
пишу на делфи
Можно и так, только аккуратнее там со строковыми типами.

Офлайн

#6 Авг. 18, 2014 12:56:44

vald
Зарегистрирован: 2014-08-18
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

тип ctypes.c_char_p (аналог в C#)

Shaman
Можно и так, только аккуратнее там со строковыми типами.
вот как раз с ними сейчас и втыкаюсь((((

Офлайн

#7 Авг. 18, 2014 18:26:33

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

тип ctypes.c_char_p (аналог в C#)

Shaman
а в нём подключать обычные длл-ки проблемой не было
Я правильно понимаю что в IronPython берем обычный пакет ну например numpy и ставим его в IronPython? Мне в это не особо верится т.к. из гугла получаю https://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net. т.е. Нужен порт и он в текущее время не поддерживается…



Офлайн

#8 Авг. 18, 2014 18:41:39

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

тип ctypes.c_char_p (аналог в C#)

doza_and
Я правильно понимаю что в IronPython берем обычный пакет ну например numpy и ставим его в IronPython?
Прошу прощения - выше я не понял о которых именно модулях речь. Бинарные CPython-модули с IronPython конечно же несовместимы.

Отредактировано Shaman (Авг. 18, 2014 18:42:35)

Офлайн

#9 Авг. 18, 2014 18:50:07

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

тип ctypes.c_char_p (аналог в C#)

Кстати я не вижу причин почему нельзя было сделать поддержку бинарных модулей. Может со временем она и появится.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version