Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > h2xs и C::Scan


Автор: Sugar84 24.3.2011, 12:16
Привет всем.

Столкнулся с такой проблемой.
 Есть исходники на C, это либа - клиент к работающему ПО, хочу написать модуль-обертку, чтобы иметь интерфейс к этому ПО из Perl. Понял мой путь - XS.

Немного покопав, нашел такой способ:
http://search.cpan.org/~rjbs/perl-5.12.3/utils/h2xs.PL#Extension_based_on_.h_and_.c_files

Делал все по инструкции, несколько раз, все разы получал такую ошибку:
Код

Expecting parenth after identifier in `size_t port'
after `size_t '


Это уже при при выполнении такой команды:
Код

h2xs -Oxan Ext::Ension header.h


Никто с такой ошибой не сталкивался?

Предположительно затык происходит в строке 27. Вот сам header-файл:
Код

#ifndef __VOICEMAN_VMCLIENT_H__
#define __VOICEMAN_VMCLIENT_H__

#ifdef __cplusplus 
#define EXTC extern "C"
#else
#define EXTC extern
#endif /* __cplusplus*/

#define VOICEMAN_LANG_NONE 0
#define VOICEMAN_LANG_ENG 1
#define VOICEMAN_LANG_RUS 2

#define VOICEMAN_PROCMODE_ALL 0
#define VOICEMAN_PROCMODE_SOME 1
#define VOICEMAN_PROCMODE_NONE 2

typedef int vm_connection_t;
#define VOICEMAN_BAD_CONNECTION (vm_connection_t)-1

typedef int vm_result_t;
#define VOICEMAN_ERROR (vm_result_t)-1
#define VOICEMAN_OK 0

EXTC vm_connection_t vm_connect();
EXTC vm_connection_t vm_connect_unix(char* path);
EXTC vm_connection_t vm_connect_inet(char* host, size_t port);
EXTC void vm_close(vm_connection_t con);
EXTC vm_result_t vm_text(vm_connection_t con, char* text); 
EXTC vm_result_t vm_stop(vm_connection_t con);
EXTC vm_result_t vm_letter(vm_connection_t con, char* letter);
EXTC vm_result_t vm_tone(vm_connection_t con, size_t freq, size_t lengthms);
EXTC vm_result_t vm_pitch(vm_connection_t con, unsigned char value);
EXTC vm_result_t vm_rate(vm_connection_t con, unsigned char value);
EXTC vm_result_t vm_volume(vm_connection_t con, unsigned char value);
EXTC vm_result_t vm_procmode(vm_connection_t con, unsigned char procmode);
EXTC vm_result_t vm_family(vm_connection_t con, unsigned char lang, char* family);

#endif /*__VOICEMAN_VMCLIENT_H__*/


Подскажите куда хоть копать, а то я не знаком ни с C, ни с XS.
Заранее благодарен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)