![]() |
Eine in Delphi erstellte DLL in Visual Basic einbinden
Hallo,
ich weiß es gab schon ähnliche Threads, habe auch schon die Informationen dort befolgt, bin aber trotzdem zu keiner funktionierenden Lösung gekommen. Problem dürfte sein, dass ich mich in Visual Basic einfach nicht auskenne. Mein Anliegen ist es nun eine in delphi geschriebene DLL in Visual Basic zu verwenden. Ich habe dazu ein ganz einfaches Beispiel welches ich in einem Tutorial für DLLs gefunden habe verwendet.
Delphi-Quellcode:
Daraus ist die dll mathe.dll entstanden. Soweit so gut.
library mathe;
{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt- Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL. Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String- Informationen als PChar- oder ShortString-Parameter übergeben. } uses SysUtils, Classes; {$R *.res} function addiere(v1, v2: integer):integer; stdcall; begin Result := v1 + v2; end; exports addiere; begin end. Nun wollte ich sie in VB einbinden. Ich habe dort ein neues Projekt erstellt und die dll in das Verzeichnis gelegt wo auch das Projekt abgespeichert wurde und die ausführbare VB Datei dann gespeichert worden wäre. Ich habe sie versucht folgendermaßen einzubinden:
Code:
Wobei das Alias "addiere" sofort wieder weg war.
Declare Function addiere Lib "mathe.dll" Alias "addiere" (ByVal V1 as Integer, ByVal v2 as Integer) As Integer
Die Funktion habe ich dann in einem ClickEvent aufgerufen:
Code:
x = addiere(10, 10)
Als ich dieses Projekt dann ausführen wollte bekam ich eine Fehlermeldung... Zitat:
|
Re: Eine in Delphi erstellte DLL in Visual Basic einbinden
Integer ist unter Delphi ein Longint (32-Bit). Also musst du in Visual Basic auch Long benutzen und nicht Integer (16-Bit).
Delphi-Quellcode:
library Mathe;
function Addiere(ValueA, ValueB: Integer): Integer; stdcall; begin Result := ValueA + ValueB; end; exports Addiere; begin end.
Code:
Option Explicit
Private Declare Function Addiere Lib "Mathe.dll" (ByVal ValueA As Long, ByVal ValueB As Long) As Long Private Sub Command1_Click() MsgBox CStr(Addiere(10, 10)) End Sub |
Re: Eine in Delphi erstellte DLL in Visual Basic einbinden
Danke für die schnelle Antwort.
Jetzt meckert Visual Basic zwar nicht mehr über die Declare Anweisung, sondern liefert einen anderen Fehler.
Code:
[Nachtrag]
Laufzeitfehler '453'
DLL-Einsprungpunkt Addiere in mathe.dll nicht gefunden. DLL unterscheiden zwischen Groß und Kleinschreibung, daher konnte auch kein "Addiere" gefunden werden, wenn ich in der DLL "addiere" exportiere. [/Nachtrag] |
Re: Eine in Delphi erstellte DLL in Visual Basic einbinden
Zitat:
Delphi-Quellcode:
(Beispiel aus der Delphi-Hilfe). Dabei wird der Name exakt so exportiert wie nach name angegeben.
exports
InitEditors, DoneEditors name 'Done', InsertText name 'Insert', DeleteSelection name 'Delete', FormatSelection, PrintSelection name 'Print', . . . SetErrorHandler; ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz