On Tue, Oct 17, 2006 at 05:47:57PM +0400, Alexey I. Froloff wrote: > * Alexey I. Froloff [061017 17:41]: > > > > Боюсь что я виноват. > > > Но исправлять придется тебе. :) > > Как? > > XS(XS_VIM_Msg); > ... > > MODULE = VIM PACKAGE = VIM > > -void > +static void > Msg(text, hl=NULL) > char *text; > > Я правильно понял принцип? Нет. static здесь будет означать совсем другое, perldoc perlxs. Принцип такой, что весь *.xs файл делится на две части: одна вставляется в сишный файл as is, а другая (начиная с ^MODULE) препроцессируется. У тебя "XS(XS_VIM_Msg)" относится к первой части, а "void Msg(text, hl=NULL)" -- ко второй. При этом из Msg по умолчанию теперь будет генериться static XS(XS_VIM_Msg) { ... Соответственно принцип такой, что нужно либо отрубить static в генерате с помощью XSUBPP_NO_STATIC_XS=1, либо подправить прототипы в as is секции.