ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
364
364
EMPFEHLEN
-
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]
das glaube ich nicht, da es egal ist was für eine funktion ich aufrufe, ich bekomme immer den selben fehlerAber sieht eher so aus als wenn ein Parameter einen falschen Wert liefert.
dankeGeändert von FJK (29.01.08 um 16:29 Uhr)
-
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.

Und wie du siehst im ObjectBrowser die Funktion nicht?
Wenn er keine anzeigt, dann kannst du doch eigentlich auch nicht auf die drauf zugreifen
(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
könntest du mir das bitte nochmal genauer erklären?Vielleicht stimmt einfach der Modifierer in VB nicht (nicht public deklariert).
Edit:
ich habe gerade eine neue dll erstellt, mit zwei klassen
und einer einfachen additions funktion,
class2
Code :1 2 3 4 5
Public Function Add(i As Double, j As Double) Add = i + j + 2 End Function
ich kann mit
Code :1 2 3 4 5 6 7 8
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
dankeGeändert von FJK (30.01.08 um 09:03 Uhr)
-
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
-
hmm danke
kann das sein das in der dll, vb6 spezifischer code ist, so das .net nichts damit anfangen kann?
die classen greifen intern auf module und andere classen in der dll zu, kann das vieleicht auch ein fehlergrund sein
-
soweit habe ich mich noch nicht damit beschäftigt,
ich weiß nur das es die VB Collection in .Net nicht gibt, falls ev. deine Funktion solche eine Collection erwartet, solltest du in VB 6 eine neue Funktion anlegen und dort intern die Collection setzen.
Oder falls du ein Array übergibst könnte es natürlich auch dort an den Indexer liegen, VB 6 beginnt glaube standardmäßig bei 1.
Und ich glaube es gab noch irgendwas mit nothing zu beachten aber da fält mir jetzt nicht ein was es war.
Und dann gibt es noch folgende Typen unterschiede:
VB6 - .Net
Double - Float
Long - Int
....
Also was in VB 6 double ist, ist in .Net Float oder in VB 6 Long ist in .Net int ...
Hab jetzt keine IDE hier um das fortzusetzen
Aber ich denke mal bei den Typen hätte er schon beim kompilieren meckern müssen.
Ansonsten müsste .Net relativ egal sein was VB 6 intern noch alles für Modul aufruft.
Könnte natürlich sein das ein Modul ein Objekt verwenden will welches garnicht instaziiert wurde, vielleicht mal die Funktion selber in nem extra VB 6 Programm testen.
Ähnliche Themen
-
Permanent Fehler beim Ausführen einer Datei
Von DrMueller im Forum .NET Application und Service DesignAntworten: 11Letzter Beitrag: 13.07.10, 15:32 -
Fehler beim Ausführen von Query
Von Tobbes im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 30.06.06, 12:35 -
fehler bei tutorials ? fehler beim löschen einer zeile aus einer txt
Von -GS-Master im Forum PHPAntworten: 5Letzter Beitrag: 20.02.06, 19:36 -
Fehler beim ausführen..Speicherstelle?
Von TwoFaze im Forum C/C++Antworten: 9Letzter Beitrag: 11.10.05, 14:53 -
OMNIHTTPd und PHP 4.2 - fehler beim ausführen
Von fishguts im Forum PHPAntworten: 1Letzter Beitrag: 12.05.02, 19:30





Zitieren
Login





