AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Eine in Delphi erstellte DLL in Visual Basic einbinden
Thema durchsuchen
Ansicht
Themen-Optionen

Eine in Delphi erstellte DLL in Visual Basic einbinden

Ein Thema von GuenterS · begonnen am 27. Dez 2004 · letzter Beitrag vom 28. Dez 2004
Antwort Antwort
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#1

Eine in Delphi erstellte DLL in Visual Basic einbinden

  Alt 27. Dez 2004, 23:33
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:
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.
Daraus ist die dll mathe.dll entstanden. Soweit so gut.

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:
Declare Function addiere Lib "mathe.dll" Alias "addiere" (ByVal V1 as Integer, ByVal v2 as Integer) As Integer
Wobei das Alias "addiere" sofort wieder weg war.

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:
Fehler beim Kompilierem:

Konstanten, Zeichenfolgen fester Länge, benutzerdefinierte Arrays und Declare-Anweisungen sind als öffentliche Mitglieder von Objektmodulen nicht zugelassen.
Was mach ich nur falsch?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Eine in Delphi erstellte DLL in Visual Basic einbinden

  Alt 28. Dez 2004, 00:12
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
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Eine in Delphi erstellte DLL in Visual Basic einbinden

  Alt 28. Dez 2004, 10:03
Danke für die schnelle Antwort.

Jetzt meckert Visual Basic zwar nicht mehr über die Declare Anweisung, sondern liefert einen anderen Fehler.

Code:
Laufzeitfehler '453'

DLL-Einsprungpunkt Addiere in mathe.dll nicht gefunden.
[Nachtrag]
DLL unterscheiden zwischen Groß und Kleinschreibung, daher konnte auch kein "Addiere" gefunden werden, wenn ich in der DLL "addiere" exportiere.
[/Nachtrag]
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Eine in Delphi erstellte DLL in Visual Basic einbinden

  Alt 28. Dez 2004, 10:11
Zitat von GuenterS:
DLL unterscheiden zwischen Groß und Kleinschreibung, daher konnte auch kein "Addiere" gefunden werden, wenn ich in der DLL "addiere" exportiere.
Korrekt. Du kannst das exports Statement so abändern, dass Du den Namen für die DLL explizit festlegen kannst:
Delphi-Quellcode:
exports
    InitEditors,
    DoneEditors name 'Done',
    InsertText name 'Insert',
    DeleteSelection name 'Delete',
    FormatSelection,
    PrintSelection name 'Print',
    .
    .
    .
    SetErrorHandler;
(Beispiel aus der Delphi-Hilfe). Dabei wird der Name exakt so exportiert wie nach name angegeben.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz