Hallo Leute,
habe mich nun extra hier angemeldet weil ich einfach nicht weiterkomme... 🙁
Folgendes Szenario:
Ein bestehendes Programm (in VB geschrieben) greift auf eine .dll zu. Ich soll diese .dll als Aufgabe in meiner Ausbildung "nachbauen". Ich habe jetzt eine .dll mit C# geschrieben und wenn ich diese in ein anderes C# Programm implementiere funktioniert auch alles einwandfrei und der Zugriff auf die in der DLL vorhandenen Funktionen klappt super.
Nun versuche ich die DLL in einem VB Code zu implementieren über folgenden Befehl:
Private Declare Function XFunktion Lib "XDLL.dll" Alias "XFunktion" (ByVal XML As String, written As Long, left As Long, ByVal fetch As Long) As Long
Ich erhalte die ganze Zeit die Fehlermeldung, dass der Einstiegspunkt nicht gefunden werden konnte, obwohl ich in der DLL eine Funktioni mit dem Namen "XFunktion" habe!
Ich habe auch schon einmal in der cmd eingegeben:
dumpbin.exe /exports XDLL.dll
Jedoch zeigt er mir hier auch keinen anderen Funktionsnamen an.
Habt ihr eine Idee? Ich verzweifle so langsam 🙁
EDIT: Ich kann keinen Verweis in VB machen, sondern die DLL muss genau so implementiert werden wie im Code ("Private Declare Function...usw"), da meine .dll am Ende einfach mit der original .dll ausgetauscht werden soll!
Grüße,
cRz
Wenn die Methode XFunktion heisst dann kannst du das ALIAS weglassen. Das müsstest du nur dann angeben wenn die Deklaration sich von dem eigentlichen Methoden-Namen unterscheidet.
Wieso Verwendest du kein using? (Verweis auf die dll nicht vergessen)
Den DllImport benötigst du eigt. nur für API-Calls
Edit: habe den Edit zu spät gesehen... Ignore my Answer
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
@cRz_-
Da hast du aber einiges falsch verstanden.
In beiden fällen liegst du mit deiner herangehensweise falsch.
Hallo cRz_-,
EDIT: Ich kann keinen Verweis in VB machen, sondern die DLL muss genau so implementiert werden wie im Code ("Private Declare Function...usw"), da meine .dll am Ende einfach mit der original .dll ausgetauscht werden soll!
ich bin mir nicht sicher, aber ich glaube das steht nicht im Widerspruch. Solange die Schnittstellen deiner .dll und die der orginal.dll gleich sind, solltest du sie nachher einfach austauschen können.
Hallo jreusch,
natürlich kann man eine DLL einfach austauschen, wenn die Schnittstelle gleich ist. Genau das zu hinzubekommen ist doch der springende Punkt. Die spannende Frage ist, ob die Original DLL eine native DLL ist. Das steht zu vermuten. Und dann zieht der Einwand von FZelle, dass man mit C# keine nativen DLLs erstellen kann.
Hallo cRz_-,
bevor wir jetzt weiter spekulieren solltest du klar sagen, um was für eine DLL es sich handelt, nativ oder managed. Außerdem, ob es sich um VB6 oder VB.NET handelt.
herbivore
verstehe ich das richtig?
native = habe ich keinen zugriff drauf
managed = kann ich bearbeiten?
Dann ist die Original DLL native 😦
@cRz_-
Da hast du aber einiges falsch verstanden. [...]
Ich habe nur den VB Code bekommen wie die Schnittstelle aufgerufen wird. Es kann gut sein dass ich einiges falsch oder noch gar nicht verstanden habe, weil ich das alles jetzt erst lerne 😁
Was heißt denn, "den COM weg gehen" ?
Hallo cRz_-,
nein, verstehst du nicht richtig. Bitte schlage die Begriffe selbst nach. Informiere dich überhaupt selber über das Einbinden von DLLs. Es ist nicht der Sinn des Forums, dass wir die Arbeit übernehmen, die nur nötig wird, weil du dich offensichtlich nicht mal im Ansatz selber informiert hast.
herbivore