fehler beim ausführen einer dll

FJK

Erfahrenes Mitglied
Hallo,
ich verusche gerade eine in vb6 erstellte dll in vb.net einzubinden.
leider bekomme ich beim aufruf einer funktion immer den fehler
COMExcedure wurde nicht behandelt.
Invalid procedure call or argument

ich verstehe nicht wo genau der fehler liegen kann, da die dll in vb6 funktioniert. und es doch eigendlich nur noch maschinensprache ist, also keine vb befehle mehr enthält oder?
also man könnte doch auch eine c/c++... dll in vb oder umgekehrt einbinden

danke
 
die DLL als Verweis (Reference) eingefügt oder?
Dann müsste in den Verweisen jetzte eine Art meineDll.Interop.DLL sein, diese kannst dir ja mal im ObjectBrowser anschaun (doppelklick auf die DLL) und schaun was für Parameter die Funktion braucht.

Die Funktion selber müsste auch in einer (VB6) Klasse sein, Module kann man glaube zum Beispiel nicht ansprechen.

Aber sieht eher so aus als wenn ein Parameter einen falschen Wert liefert.
 
hallo danke

im objectbrowser stehen die module drin, aber irgendjemand hat da ein
_IID_ vor den namen geschrieben
also _IID_Modulname
wenn ich dann auf das plus neben den ordner klicke steht da
1[NEUTRAL]


Aber sieht eher so aus als wenn ein Parameter einen falschen Wert liefert.
das glaube ich nicht, da es egal ist was für eine funktion ich aufrufe, ich bekomme immer den selben fehler

danke
 
Zuletzt bearbeitet:
Könntest du mal die Funktion posten wie sie im Objekt Browser ausschaut und wie du die Funktion in.Net aufrufst.
Hab bisher nur VB6 Klassen in .Net verwendet und die liefen meistens fast Reibungslos.
 
also im objectbrowser sehe ich keine funkiton
aufrufen mache ich das

global
Dim Test As Classenname.Modulname

in der form load

Test = new Classenname.Modulname

eigendlicher aufruf

Test.Funktionsname
 
ehm ich meinte so wie du es wirklich aufrufen willst, nicht irgend ein Beispiel. :rolleyes:

Und wie du siehst im ObjectBrowser die Funktion nicht?
Wenn er keine anzeigt, dann kannst du doch eigentlich auch nicht auf die drauf zugreifen :confused:
(außer isn Bug, ist mir aber so nur bekannt wenn die DLLs nicht lokal liegen)
 
ich rufe die genau so auf,

im objektbrowser sehe ich nur den dll namen und die classen die die dll beinhaltet, aber keine funktionen, variablen... in den classen

danke
 
komischer Aufruf

und die Funktion in VB6 selber ist als public function deklariert?
Vielleicht stimmt einfach der Modifierer in VB nicht (nicht public deklariert).

Wenn nicht zu umfangreich könntest du ja den VB Code mal posten.
 
guten morgen,
ich fürchte das darf ich nicht

die funktionen sind alle auf public,
die klassen habe ich mit Multiuse und GlobalMultiuse versucht

Vielleicht stimmt einfach der Modifierer in VB nicht (nicht public deklariert).
könntest du mir das bitte nochmal genauer erklären?

Edit:
ich habe gerade eine neue dll erstellt, mit zwei klassen
und einer einfachen additions funktion,

class2
Code:
Public Function Add(i As Double, j As Double)

    Add = i + j + 2

End Function

ich kann mit

Code:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim g As Project1.Class2
        g = New Project1.Class2
        Dim b As Double

        b = g.Add(1, 2)

    End Sub

draufzugreifen und bekomme auch richtige werte zurück
im objectbrowser sehe ich jedoch nur die classen aber keine enthaltenen funktionen
hab auch nichts an der grundeinstellung der dll geändert

danke
 
Zuletzt bearbeitet:
Im Prinzip meinte ich das was du schon beantwortest hast, ob die Funktion public ist.

Laut deiner weiteren Anführungen stehe ich jetzt wieder da wo ich am Anfang stand, das ein Argument falsch übergeben wird.

Irgendwie kann man auch in .Net beim debuggen in VB6 weiter debuggen, aber wie das geht hab ich vergessn :rolleyes:
 
Zurück