Сразу прошу прощения за возможно нубский вопрос, я только начал осваивать программирование как таковое, питон знаю немного, С не знаю совсем. Вопрос поместил в “Python для экспертов” так как он кажется мне достаточно сложным.
Я аспирант, занимаюсь исследование в области распространения радиволн. Сейчас я пытаюсь написать программу для проектирования и оптимизации эфирных сетей (радио, телевидение итд.). Одной из задач прип этом является расчет ослабления сигнала, для чего хочу использовать алгоритм Лонгли-Райса. Я нашел реализацию алгоритма на C: http://code.google.com/p/libprop/source/browse/trunk/longley.C и хотел бы иcпользовать его в своей программе именно в таком виде так как алгоримт довольно тяжелый и на питоне будет работать слишком медлено.
Как я понял, cython позволяет подключать библиотеки на C в качестве модулей для питона.
Я создал файл lr.pyx, прописал там:
cdef extern from "longley.C": ctypedef void point_to_point(double elev[], double tht_m, double rht_m, double eps_dielect, double sgm_conductivity, double eno_ns_surfref, double frq_mhz, int radio_climate, int pol, double conf, double rel, double &dbloss, char *strmode, int &errnum)
from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext sourcefiles = ['lr.pyx', 'longley.C'] setup( cmdclass = {'build_ext': build_ext}, ext_modules = [Extension("lr", sourcefiles)] )
Собственно, что я делаю не так?