Seite 1 von 1

Fehler bei Aufruf einer in PB erstellten DLL unter VB 6.0

Verfasst: 13.09.2011 13:23
von AndyF
Hallo PB Freunde!

Ich habe ein Problem und hoffe Ihr könnt mir helfen:

Für ein VisualBasic 6.0 Projekt benötige ich eine Berechnung einer SHA1 Checksumme.
Da PB hierfür ein Funktion bereitstelt :-) möchte ich diese in eine Windows DLL kapseln
und diese dann unter VB 6.0 aufrufen.

Das Gesamtkonstrukt kompiliert fehlerfrei aber unter VB 6.0 sürtzt das Programm dann ab mit einem Speicherfehler.

Der Fehler besagt:
Die Anweisung in "0x7c809e32" verweist auf Speicher in "0x01ca8000". Der Vorgang "read" kann nicht auf dem Speicher durchgeführt werden.
Ich poste hier mal den Code des Projektes:



In PureBasic 4.51:

Datei sha1_dll.bas:

Code: Alles auswählen

Global ReturnString.s

ProcedureDLL.s CalcSHA1 (InputString.s)
  
  ReturnString = SHA1Fingerprint(@InputString,StringByteLength(InputString))
  
  ProcedureReturn ReturnString
  
EndProcedure
Die fertige DLL heisst sha1.dll



In VisualBasic 6.0:
In der Form1 sind noch ein Texteingabefeld , ein CommandButton und ein Label definiert
Bei Klick auf den Buttun soll der text im Eingabefeld von der sha1.dll übernommen und dessen SHA1 Fingerprint berechnet werden.
Das Ergebins ist ein String, welcher dann als caption für das Label verwendet werden soll.

In Form1:

Code: Alles auswählen

Private Sub Command1_Click()

 Dim ergebnis As String

 ergebnis = CalcSHA1(Text1.text)

 Label1.Caption = ergebnis

End Sub


In Modul SHA1.bas:

Code: Alles auswählen

Public Declare Function CalcSHA1 Lib "H:\programming\VB6\calc_sha1_summe_via_dll\sha1.dll" (ByRef text As String) As String
Könnt Ihr mir einen Tip geben woran das liegen kann?

Ganz herzlichen Dank für Eure Zeit und Hilfe.

Gruß
Andy

Re: Fehler bei Aufruf einer in PB erstellten DLL unter VB 6.

Verfasst: 13.09.2011 14:07
von NicTheQuick
Ich kann dir leider nicht sagen, wie du dein Problem löst, aber ich kann dir sagen, dass du deine PB-Lizenz verletzt, wenn du einzelne PB-Funktionen wrapst, in DLLs auslagerst und weiter gibts. Für den privaten Gebrauch also völlig okay, nur weitergeben darfst du diese DLL dann nicht.