Schrift
[thread]7384[/thread]

XS Nachhilfe ...

Leser: 2


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
J-jayz-Z
 2005-10-22 16:02
#59134 #59134
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich wollte mir gerade mal so mir nichts, dir nichts ein kleines XS Modul bauen, und irgendwie ist die *.xs Datei nicht das, was ich wollte...
Ich habe das Modul mit h2xs -A -n curse gebaut.
Daraufhin habe ich folgende Dateien bekommen:

Changes
curse.xs
Makefile.PL
MANIFEST
ppport.h
README
t/curse.t
lib/curse.pm

Die *.h Datei, die ich in *.xs haben will, heißt curse.h und funktioniert soweit einwandfrei. Nur hätte ich jetzt gerne, das die curse.h Datei irgendwie in die curse.xs Datei übersetzt wird, da ich von XS überhaupt keine AHnung habe.
Die curse.xs Datei sieht so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"

#include <curse.h>


MODULE = curse PACKAGE = curse


und wenn ich dieses Script aufrude:

Code: (dl )
1
2
3
4
5
6
7
#!/usr/bin/perl
use strict;
use warnings;

use curse ':all';

&curse::taste();


bekomme ich nur:
Undefined subroutine &curse::taste called at test.pl line 7.

Kann mir jemand sagen, wie ich die *.h Datei in die *.xs Datei umwandeln kann ? bzw. ist das überhaupt nötig ?
dank euch schonmal im Vorraus !
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
sri
 2005-10-22 16:15
#59135 #59135
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ist in den beiden Buechern "Extending and Embedding Perl" und "Advanced Perl Programming 1st Edition" ganz toll beschrieben.
J-jayz-Z
 2005-10-22 16:18
#59136 #59136
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
tut mir leid sri, aber das bringt mich im Moment nicht weiter...
Könntest du mir vielleicht auch so einen Tipp geben, oder vielleicht auch etwas online zu lesen ?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
sri
 2005-10-22 16:29
#59137 #59137
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also Leuten die nichtmal ins perldoc schaun helfe ich normalerweise grundsaetzlich nicht...

Haettest du das naemlich getan waere die aufgefallen das du die header dateien einfach als argumente uebergeben kannst!

h2xs -n Curse curse.h...
J-jayz-Z
 2005-10-22 16:34
#59138 #59138
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
okay, ich hab rein gesehen, deshalb weiß ich auch, das ich auch -A für xs mit angeben muss :p

EDIT: Es ändert aber auch mit deinem Post nichts, an meinem vorherigen Problem. Die curse.xs sieht immer noch genauso aus, ich bekomm die selbe Fehlermeldung\n\n

<!--EDIT|J-jayz-Z|1129984603-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
J-jayz-Z
 2005-10-27 11:09
#59139 #59139
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nur, um das Thema nochmal aufzurollen:
Hat jemand nun ne Idee, wie ich meinen C++ Code da rein bekomme?
Wir haben ja nun festgestellt, das ich die perldoc gelesen habe, komme aber leider nicht weiter... :-(
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
renee
 2005-10-27 15:06
#59140 #59140
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber Du hast schon alle perldocs zu dem Thema "Interna und das C-Interface" gelesen?? Siehe Liste: http://wiki.perl-community.de/bin....terface
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
jan
 2005-10-27 17:25
#59141 #59141
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
kann nicht mal jemand einen hack schreiben, der automatisch als antwort auf threads schreibt, dass das problem mit hilfe von perldoc gelöst werden kann und dann den thread schließt? das wäre doch super, endlich ein vollautomatisiertes forum...
sesth
 2005-10-27 17:32
#59142 #59142
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
XS ist kein kleiner Brocken. Aus der Header-Datei werden nur die Konstanten übernommen und automatisch transformiert. Den Rest must Du selbst machen. Dabei gibt es gerade bei der Abbildung von Datentypen viele Freiheitsgrade. Wenn Dich das Thema ernsthaft interessiert, fang doch erst einmal mit "Hello World" Beispielen an.

Bei C++ msut Du je nach Betriebssystem auch noch das makefile.pl überarbeiten. Dort muß z.B.
Code: (dl )
1
2
CCFLAGS => '-TP -GX',
XSOPT => '-C++',

drinstehen.
Gruß
Thomas
J-jayz-Z
 2005-10-27 22:51
#59143 #59143
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=jan,27.10.2005, 15:25]kann nicht mal jemand einen hack schreiben, der automatisch als antwort auf threads schreibt, dass das problem mit hilfe von perldoc gelöst werden kann und dann den thread schließt? das wäre doch super, endlich ein vollautomatisiertes forum...[/quote]
Beim besten Willen, wie oft soll ich den zum Geier noch schreiben, das ich bereits mit der perldoc durch bin. Renees Frage war ja noch okay, aber dann solche Sprüche zu bringen find ich nicht gerade berauschend. Man kann auch das komplette board schließen und einfach in ein paar Sätzen auf die Hauptseite schreiben:

"Dieses Forum wurde geschlossen, da es keine Fragen gibt, die nicht auf http://perldoc.perl.org beantwortet werden können. Wir bitten um Ihr Verständniss!"

Danke fürs Gespräch...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2005-10-22 16:02.