Schrift
[thread]7501[/thread]

DLL in Perlskript einbinden.

Leser: 2


<< >> 9 Einträge, 1 Seite
vayu
 2005-11-28 12:00
#60473 #60473
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte aus einer .dll Datei Funktionen benutzen. Dazu muss ich die ja bestimmt irgendwie includen. Kann mir jemand sagen, wie das funktioniert? Hab sowas noch nie vorher gemacht.

gruss Vayu
pq
 2005-11-28 12:28
#60474 #60474
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perldoc Inline
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
vayu
 2005-11-28 15:14
#60475 #60475
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
thx :)

d.h. ich würde es dann so machen

Code: (dl )
1
2
3
4
5
6
7
8
9
use Inline C++ => 'DATA';

print "9 + 16 = ", add(9, 16), "\n";
print "9 - 16 = ", subtract(9, 16), "\n";

_ _DATA_ _
_ _C++_ _ # die Unterstriche musste ich trennen,weil sonst die komplette Zeile nicht angezeigt wird

#include "my_math.dll"


und in der my_math.dll sind dann zB die add() und subtract() funktionen drin

Wie schaut es dann mit Objekten aus? wenn ich eine Init() funktion aufrufe, die mir ein Objekt zurückgibt. Das müsste ich alles im C-Code-Teil machen dann oder?\n\n

<!--EDIT|vayu|1133185743-->
vayu
 2005-12-22 12:07
#60476 #60476
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hallo,

ich bin es nochmal. Ich probier grad was in perldoc Inline steht

allerdings wird mir dann beim starten meines scripts gesagt, dass Inline nur C als Sprache kennt.

gibt es auch ein Modul für C++? über ppm search finde ich nichts.


mein Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

use Inline ('C++' => 'DATA',
DIRECTORY => './',
LIBS => '-llib/',
INC => '-Ilib/include/'
);



Init(0,0,0);



_ _DATA_ _
_ _C++_ _
\n\n

<!--EDIT|vayu|1135246076-->
esskar
 2005-12-22 13:01
#60477 #60477
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
inline c ist für die sache auch nicht die wahl.
man kann mit Win32::API LoadLibrary aufrufen und dann mit GetProcAddr auf die Funktionen zugreifen
pq
 2005-12-22 13:47
#60478 #60478
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=vayu,22.12.2005, 11:07]gibt es auch ein Modul für C++? über ppm search finde ich nichts.[/quote]
es gibt inline wirklich für sehr viele sprachen.
CPAN:Inline
C++ ist auch dabei. bei mir ist es gleich der erste treffer.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
vayu
 2005-12-22 15:20
#60479 #60479
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ich hab per ppm search gesucht pq, dachte eigentlich da sollte es alles geben ;)

Danke @esskar, werde das mal probieren.
renee
 2005-12-22 23:46
#60480 #60480
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist CPAN:Inline::CPP. Vielleicht kannst Du ja auch mit perl -MCPAN -e "install Inline::CPP" installieren...

Siehe auch: Wiki:Wie installiere ich ein Module
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/
steffenw
 2005-12-23 00:26
#60481 #60481
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das funktionierte schon mal und setzte die Zeit im Windows-Rechner über kernel32.dll.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use strict;
use warnings;
use Win32::API;
use Win32::API::Struct;
Win32::API::Struct->typedef(LOCALTIME => qw{
WORD wYear
WORD wMonth
WORD wDayOfWeek
WORD wDay
WORD wHour
WORD wMinute
WORD wSecond
WORD wMilliseconds
});

Win32::API->Import('kernel32', 'BOOL SetLocalTime(LOCALTIME lpPoint)');
my $localtime = Win32::API::Struct->new('LOCALTIME');

# dann kann man mit $localtime->{wYear} = 2004, etcpp. die Werte setzen
# und dann die Funktion aufrufen

@{$localtime}{qw/wYear wMonth wDay wHour wMinute wSecond wMilliseconds/} = qw/2004 2 10 23 22 30 0/;

SetLocalTime($localtime) or print Win32::FormatMessage Win32::GetLastError;
$SIG{USER} = sub {love 'Perl' or die};
<< >> 9 Einträge, 1 Seite



View all threads created 2005-11-28 12:00.