2012-05-12T12:25:20 GwenDragonJa, es wird mit folgenden Assemblern Code erzeugt:
GNU AS
GASP (GNU Assembler Preprocessor)
NASM (Netwide Assembler)
2012-05-12T12:25:20 GwenDragonWas willst du denn machen?
2012-05-12T12:34:13 topegIch würde Inline::C nutzen. Das ist portabler und erzeugt ähnlich schnellen Code.
Ich habe ganz gute Erfahrungen damit gemacht.
1 2 3 4 5 6
use Inline C => <<END; void foo(pTHX_ int a) { printf("This perl interpreter is defined: %p\n", aTHX); return Perl_newSViv(aTHX_ a); }; END
2012-05-12T16:21:36 FIFOLösch mal den whitespace vor dem 'END' (Zeile 6).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/perl use strict; use warnings; use Inline C => <<'END'; void foo(int a) { printf("NUMBER: %d\n",a); } int add(int a,int b) { return a+b; } END foo(add($_,2)) for(0..9);
2012-05-12T19:07:03 topegLieß mal was hinter dem entsprechendem Code steht. Das ist kein Beispielcode, sondern ein Test für eine spezielle Funktionalität. Wenn er bei dir nicht Funktioniert, dann hat das einen Grund!
2012-05-12T19:18:35 tonewheelOk. Ist das abhaengig von den Compiler-Optionen beim Compilieren des Perl-Interpreters?
2012-05-12T19:18:35 tonewheelInteressant, das die Lib zur Laufzeit erzeugt wird. Nur woher weiss Perl beim naechsten Start, wo diese zu finden bzw. wie diese zu starten ist?
2012-05-13T07:42:52 topegDas bedeutet aber nicht das du keine Thread im C-Code nutzen kannst, das bedeutet vielmehr das nur ein Thread mit dem Interpreter interagieren darf.
2012-05-13T09:34:45 topegDie Fehlermeldung deutet darauf hin das irgendwo use inline steht anstatt use Inline. Perl achtet auf die Groß/Kleinschreibung.