Schrift
[thread]10635[/thread]

C-Code in Perl einbinde

Leser: 2


<< >> 4 Einträge, 1 Seite
Gast Gast
 2007-10-23 12:49
#101222 #101222
Hallo,

ich versuche seit einigen Tagen leider verzweifelt, C in Perl einzubinden.

Folgenden Quellcode verwende ich derzeit:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
use Inline (C => Config => DIRECTORY => 'H:\perl\perlc');


use Inline C => << 'end_of_c';

printf "I am C source code";

end_of_c

print "I r Perl \n";


Allerdings bekomme ich immer folgende Fehlermeldung:

Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

C:\programme\perl\bin\perl.exe C:\programme\perl\lib\ExtUtils\xsubpp -typemap C:\programme\perl\lib\ExtUtils\typemap c2_pl_b09f.xs > c2_pl_b09f.xsc && C:\programme\perl\bin\perl.exe -MExtUtils::Command -e mv c2_pl_b09f.xsc c2_pl_b09f.c
cl -c -IC:/DOKUME~1/User/LOKALE~1/Temp/dir25.tmp -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" "-IC:\programme\perl\lib\CORE" c2_pl_b09f.c
cl : Befehlszeile warning D4029 : Die Optimierung ist im Standardcompiler nicht verfgbar.
c2_pl_b09f.c
C:\Programme\perl\lib\CORE\perl.h(463) : fatal error C1083: Include-Datei kann nicht ge”ffnet werden: 'sys/types.h': No such file or directory
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x2'
Stop.

Ich habe nach Vorgabe sowohl das Inline Modul für Perl, so wie auch die SDK für Microsoft um die cl.exe ausführen zu können.

Wer kann mir bei meinem Problem helfen, oder mir sagen, wie ich auf andere Art und Weise C-code in Perl einbetten kann!?!
murphy
 2007-10-23 17:20
#101235 #101235
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Vielleicht fehlen dir die nötigen Umgebungsvariablen, die der M$-Compiler braucht, damit er seine Include-Dateien findet. Ich verwende schon lange kein Windows mehr, aber ich erinnere mich dunkel, dass es da so ein paar Skripte gibt, um Shells mit korrekt gesetzten Umgebungsvariablen zu starten -- versuche doch mal, Dein Perlskript von so einer Shell aus zu starten.

Übrigens ist die Zeile
Code: (dl )
printf "[...]";
kein gültiger C-Code -- da fehlen die Klammern um den Parameter der Funktion.
When C++ is your hammer, every problem looks like your thumb.
MisterL
 2007-10-24 17:32
#101275 #101275
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Ein Stückchen Quellcode aus dem Perl Kochbuch (Rezept 12.19)
Code: (dl )
1
2
3
4
5
6
7
8
9
use Inline C;
$answer = somefunc(20, 4);
print "$answer\n"; #ergibt 80
__END__
__C__
double somefunc(int a, int b) { /* Inline kennt die meisten grundlegenden C-Typen */
double answer = a*b;
return answer;
}

Besonders Harte können sich mit dem h2xs Modul herumprügeln ;-)

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
Gast Gast
 2007-10-25 13:20
#101311 #101311
auf alle Fälle schon mal danke..
darauf kann ich jedenfalls schon mal aufbaun.


:)
<< >> 4 Einträge, 1 Seite



View all threads created 2007-10-23 12:49.