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

Parameterübergabe an eine dll

Leser: 1


<< >> 7 Einträge, 1 Seite
Elderian
 2004-06-29 13:08
#83769 #83769
User since
2004-06-29
5 Artikel
BenutzerIn
[default_avatar]
Heya,

ich hab hier ein kleines Problem mit einer Funktion, die ich aus Perl mittels Win32::API in einer dll aufrufe. Leider sieht die Dokumentation nicht vor, dass man diese dll in Perl einbinden könnte und ist daher eher unpraktisch.

Hier der Prototyp:
Code: (dl )
1
2
3
4
Submit(STRING, STRING, DWORD, LPVOID);
STRING: char
DWORD: Dezimalwert ohne Vorzeichen, 32bit
LPVOID: Zeiger auf void


Rufe ich diese Funktion im Folgenden korrekt auf?

Code: (dl )
1
2
3
4
5
6
my $string1 = "Eins";
my $string2 = "Zwei";
my $num = 5;
my $voidpointer = "irgendwas";

$Submit->Call($string1, $string2, $num, $voidpointer);


Danke für Eure Hilfe!

Elderian
Ach ja: WindowsXP, IndigoPerl 5.6, viel Frust weils nicht funktioniert...
Rambo
 2004-06-29 13:24
#83770 #83770
User since
2003-08-14
803 Artikel
BenutzerIn

user image
schon mal hier geschaut?
http://search.cpan.org/~acalpini/Win32-API-0.41/API.pm
es gibt auch in diesem form schon einige beiträge hierzu.

fürti rambo
Elderian
 2004-06-30 15:01
#83771 #83771
User since
2004-06-29
5 Artikel
BenutzerIn
[default_avatar]
Danke, hab ich. Auch die Beiträge in diesem Forum hab ich ausführlich studiert.

Es scheint, als liege der Fehler nicht in meinem Perl-Code (der für andere DLLs funktioniert), sondern in der Implementierung dieser Funktion in der DLL.

Aber wie kann ich eine Funktion implementieren, die sich aus vielen anderen Programmiersprachen ohne Probleme aufrufen lässt, und unter Perl bzw. Win32::API das ganze Skript mit in den Tod reisst? :rock:

Elderian
esskar
 2004-06-30 16:10
#83772 #83772
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
die deklaration der funktion in der dll!
Elderian
 2004-06-30 16:19
#83773 #83773
User since
2004-06-29
5 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,30.06.2004, 14:10]die deklaration der funktion in der dll![/quote]
.... das versteh ich jetzt nicht...
esskar
 2004-07-01 01:50
#83774 #83774
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Elderian,30.06.2004, 14:19][quote=esskar,30.06.2004, 14:10]die deklaration der funktion in der dll![/quote]
.... das versteh ich jetzt nicht...[/quote]
das ist eine deklaration einer funktion in c++

Code: (dl )
char* GetBasicConstraints(void* lpvoid, LPSTR oid);


gibt es sowas auch für deine funktion?
ist dll von dir? also kommst du an die quellen?
Elderian
 2004-07-02 12:42
#83775 #83775
User since
2004-06-29
5 Artikel
BenutzerIn
[default_avatar]
Hallo mal wieder,

ich hab sehr viel rumprobiert, und letztlich war es ein einfacher Fehler:

In der Dokumentation wurden zwei Parameter vertauscht. Das hab ich für den Aufruf geändert, nicht aber für die Deklaration, so dass hier statt einem Zeiger eine Zahl übergeben wurde, und das hat das Script getötet...

Danke für Eure Hilfe!

Elderian
<< >> 7 Einträge, 1 Seite



View all threads created 2004-06-29 13:08.