Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7503[/thread]

Aus C eine Perl Funktion aufrufen

Reader: 1


<< >> 3 entries, 1 page
fritz
 2005-11-28 18:58
#60493 #60493
User since
2005-10-19
44 articles
BenutzerIn
[default_avatar]
Hi liebe Perlgemeinde.

Mich plagt folgendes Problem. Eine Funktion in C soll eine Funktion in Perl starten und ihr auch 4 Parameter uebergeben.

Nachdem ich mich jetzt schon etwas eingelesen habe bin ich zu dem Entschluss gekommen das es mit dem perlcall Modul gehen muss weil,

"The purpose of this document is to show you how to call Perl subroutines directly from C, i.e., how to write callbacks." <= aus der perlcall doku.

Zuerst will ich erst einmal eine Funktion ohne Parameteruebergabe ausfuehren lassen.

also:

sub callback
{
print " Ich funktioniere ";
}

der entsprechende C Code dafuer ist ebenfalls aus der Doku. er lautet

static void
   call_callback()
   {
       dSP ;        PUSHMARK(SP) ;
       call_pv("callback", G_DISCARD|G_NOARGS) ;
   }

Leider ist nirgendwo verzeichnet welche Header Files ich in C einbinden muss. Zur Zeit kennt C naemlich dSP, PUSHMARK, etc. nicht.
Vielleicht hat ja jemand von euch schon mit perlcall gearbeitet und kann mir da helfen. Waere echt super.

Schon mal danke im Vorraus

MFG
Fritz
Dubu
 2005-11-28 20:52
#60494 #60494
User since
2003-08-04
2145 articles
ModeratorIn + EditorIn

user image
perlcall ist ein Teil der Dokumentation, kein Modul.

Wenn du ein Perl-Programm hast, das Anteile in C enthaelt, die wiederum Perl-Routinen per Callback aufrufen sollen, dann sagen dir erstmal perlxstut und perlxs, wie du C einbindest, und perlcall sagt dir dann, wie du daraus wieder Perl-Routinen aufrufst.

Wenn du ein C-Programm hast, dass Perl-Code ausfuehren soll, dann brauchst du das, was in perlembed steht.
fritz
 2005-11-29 10:08
#60495 #60495
User since
2005-10-19
44 articles
BenutzerIn
[default_avatar]
Hi Dubu, danke schon mal fuer die Tips. Fuer mich trifft ja dann wohl dein erster Tip zu.

Ich rufe aus Perl Funktionen auf die in C geschrieben sind und in einer DLL abgelegt sind. Ein paar dieser Funktionen haben eine Callback Mechanismus ( sie sollen eine Funktion in Perl ausfuehren). C erwartet von mir das ich der Funktion einen Pointer auf die Callbackfunktion uebergebe. Der Weg von Perl nach C funktioniert also schon. Jetzt brauch ich nur noch den Schritt zurueck. Bitte um weitere Anregungen.\n\n

<!--EDIT|fritz|1133260655-->
<< >> 3 entries, 1 page



View all threads created 2005-11-28 18:58.