Laden...

C# DLL in Visual Basic einbinden

Erstellt von cRz_- vor 12 Jahren Letzter Beitrag vor 12 Jahren 5.694 Views
Thema geschlossen
C
cRz_- Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
C# DLL in Visual Basic einbinden

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

P
660 Beiträge seit 2008
vor 12 Jahren

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"

F
10.010 Beiträge seit 2004
vor 12 Jahren

@cRz_-
Da hast du aber einiges falsch verstanden.

  1. Wenn du mit VB.NET arbeitest, musst du nix declaren.
  2. Wenn du VB6 meinst, kannst du es so vergessen, denn C# erzeugt keine Nativen DLL's und du musst den COM weg gehen.

In beiden fällen liegst du mit deiner herangehensweise falsch.

296 Beiträge seit 2007
vor 12 Jahren

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.

49.485 Beiträge seit 2005
vor 12 Jahren

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

C
cRz_- Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren

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" ?

49.485 Beiträge seit 2005
vor 12 Jahren

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

Thema geschlossen