niro
Авг. 13, 2007 12:04:42
Есть одна библиотека на C. Ей я передаю название файла, она открывает этот файл и получает из него определенные данные. Данные в основном текстовые, но при получении этих данных и выводе их я получаю числа. Если работать с предложенным примером на C, то все нормально. Как это решается ?
bialix
Авг. 13, 2007 12:45:54
а пробовали сообщить ctypes, что функция возвращает указатель на char*?
а вообще на такой вопрос могут ответить только телепаты. мы ж не видим примера кода, так что толкового ответа будете ждать долго.
niro
Авг. 13, 2007 12:46:29
как ей сообщить о типе char ?
bialix
Авг. 13, 2007 12:55:59
курить доку насчет .restype
slivlen
Авг. 13, 2007 13:39:18
bialix
а вообще на такой вопрос могут ответить только телепаты.
Значит с этим вопросом надо идти на ЛОР :)
niro
Авг. 13, 2007 15:07:15
Спрашивать что либо на ЛОРе себе дороже.
import ctypes
lib = ctypes.cdll.LoadLibrary('./libgpx.so')
file = lib.openGP("1.gp3")
title = lib.getTitle(file)
artist = lib.getArtist(file)
print 'Title: %s'%title
print 'Artist: %s'%artist
Библиотека libgpx.so достает из бинарного файла определенный текст. Но данная программа выводит только числовые значение.
Андрей Светлов
Авг. 13, 2007 15:58:07
адреса она тебе выдает. bialix правильно писал - restype. Типа lib.getTitle.restype = c_char_p. В простейшем случае - поможет.
И вообще, без приведения .h файла для этой загадочной библиотеки (или просто определений интересующих функций) все очень напоминает гадание.
niro
Авг. 13, 2007 16:23:11
Точно, я просто не так до этого использовал restype. Спасибо
ph
Окт. 28, 2007 02:30:24
Насчет gp3
Есть такая программа на питоне написанная - songwrite
Это редактор таблатур с tk`шным интерфейсом, в нем есть функция импорта из некоторых форматов в т.ч. gp3(нативная, на питоне сделанная)
Можешь к нему подцепиться(он умеет преобразовывать в xml, например) или просто выдрать нужные функции.
А для чего тебе если не секрет?
Я вот делал аналог guitar pro и подобных на основе ajax, на основе songwrite сделал в нем импорт/экспорт из/в gtp и midi. Ну и воспроизведение(через midi)