ActiveDLL mit VB verwenden

  • #1
K

killer-Trekkie

Bekanntes Mitglied
Themenersteller
Dabei seit
28.10.2003
Beiträge
145
Reaktionspunkte
0
Hi,
ich versuche im Moment ein DLL mit VB zu verwenden.

Ich hab nur ein Problem. Es kommt immer folgender Fehler:

Laufzeitfehler->453':
DLL-Einsprungpunkt funcSpeichern in C:\Dokumente und Einstellungen\Jul\Desktop\Speichern.dll nicht gefunden

Hier ist mal mein Quelltext:

DLL:
Code:
Public Sub funcSpeichern(Pfad As String, Daten As String)
    Open Pfad For Output As #1
        Print #1, Daten
    Close #1
End Sub

Exe:
Code:
Private Declare Function talSpeichern Lib C:\Dokumente und Einstellungen\Jul\Desktop\Speichern.dll Alias funcSpeichern (Pfad As String, Daten As String)

Private Sub Command1_Click()
  Call talSpeichern(Text1.Text, Text2.Text)
End Sub

mfg

killer-Trekkie
 
  • #2
HI,

also eigentl. hab ich net so viel Erfahrungen mit .dll´s aber ich muss sagen, dass der Code eigentlich sehr logisch aussieht!

Also fangen wir einfach an...die dll liegt auch wirklich in dem Verzeichnis? ;O)
 
  • #3
Ja das ist schon im richtigen Pfad. Außerdem käme ja dann die Fehlermeldung: Dll nicht gefunden.

mfg

killer-Trekkie
 
  • #4
Kenn mich mit den VB-DLLs nicht aus, aber Google mal nach Moduldefinitionsdatei (*.def). Braucht man zumindest bei C-DLLs um die Funktionen unter einem (nicht kryptischen) Namen zu erreichen.
 
  • #5
Bracuht man nicht. da ich schon Codes gesehen hab wo z.B. die kernel32.dll ohne so was benutzt wurde.

mfg

killer-Trekkie
 
  • #6
Hi

Code:
Private Declare Function talSpeichern Lib C:\Dokumente und Einstellungen\Jul\Desktop\Speichern.dll Alias funcSpeichern (Pfad As String, Daten As String)
Eigentlich sollte es so aussehen ...
Code:
Private Declare Sub talSpeichern Lib C:\Dokumente und Einstellungen\Jul\Desktop\Speichern.dll Alias funcSpeichern (Pfad As String, Daten As String)
... weil bei deiner DLL kein Rückgabewert zurück kommt, wie bei einer Function.

PS: Erstell dir lieber eine richtige DLL-Datei mit VB :)

Mfg Alexander
 
  • #7
Bracuht man nicht. da ich schon Codes gesehen hab wo z.B. die kernel32.dll ohne so was benutzt wurde.
Die Kernel32 wurde ziemlich sicher mit einer Moduldefinitionsdatei kompiliert, ansonsten wären die Funktionen nicht unter so einfachen Namen ansprechbar.

Das der Dll-Einstiegspunkt nicht gefunden werden kann, liegt daran das die FUNKTION nicht unter dem Namen gefunden werden kann.
Ich kann leider nur bei C-Dlls mitreden, dort muss man die Funktion nach aussen erreichbar machen (Schlüsselwort: _declspec(dllexport)), das Schlüsselwort _stdcall in die Funktion einfügen und eine *.def schreiben, damit die Funktion ,trotz der _stdcall-Konvention, wieder unter einem vernünftigen Namen erreichbar ist.

Gruß Fizbin
 
  • #8
Und was muss ich machen um eine Function die mir z.B. zwei Zahlen addiert in einer DLL in ein EXE einzufügen (So dass in der DLL die beiden Zahlen addiert werden)?

mfg

killer-Trekkie
 
  • #9
Hab mir eben kurz mal ActiveX-DLLs angeschaut. Diese DLLs (in Process Server) bestehen zwingend aus Klassen die ihre Methoden und Eigenschaften haben. Diese müssen äusserst fehlertolerant programmiert sein.

Der Server (die DLL)
myServer.cls
Code:
property Get myName()
     myName=Server
      unload me
end property

Über ->Projekt->Verweise die dll für den Client nutzbar machen
client (.exe)
Code:
dim k as new myServer
k.myName
set k = nothing

So ungefahr sollte es klappen. Für die o.g. Codebeispiele ist es allerdings witzlos eine ActiveX-Dll zu programmieren. Wahrscheinlich bist Du mit einem Modul, oder maximal einem benutzerdefinierten Steuerelemt, ersteinmal besser bedient. Was willst Du den mit der ActiveX-dll genau anfangen????
 
  • #10
Im ersten Moment wars einfach mal Neugier aber ich will Code vereinfachen und mir manche Funktionen aus dem weg schaffen udn für mehrere Programme zugänglich machen. Eigentlich ist die DLL doch wie ein Modul oder irr ich mich da?

mfg

killer-Trekkie
 
  • #11
Hallo.

Dann meld ich mich nochmal und versuche die Frage zu beantworten.
Eine (ActiveX)- DLL ist etwas anderes als ein Modul. Auch kann man ActiveX-Dll und normale Dll nicht gleichsetzen.

Wenn Du Dir Code aus dem Weg räumen willst nimm ein Modul, oder in vielen Fällen besser: ein Klassenmodul.
Wofür man sich im Endeffekt entscheidet ist grösstenteils abhängig von der Planung. Und als Programmierer hat man ja auch immer noch etwas Freiraum
ActiveX-Dlls benutzt man nur in speziellen Fällen; auf jeden Fall sollte man für das Schreiben einer ActiveDll, den Umgang mit Klassen beherschen.

Gruß Fizbin
 
Thema:

ActiveDLL mit VB verwenden

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben