Seite 1 von 1

DLL in C# einbinden?

Verfasst: 23.10.2013 14:40
von Max_der_Held
Hallo Leute des Pureboard-Forums,

Purebasic DLL passt nicht in C#:
  • Ich schreibe gerade ein Projekt in C#. Es verwendet viele Code-Fragmente aus meinen Purebasic Projekten.
    Also habe ich den Purebasic Code zur DLL kompiliert.
Regsvr32
  • Wenn ich die DLL mit der Commandline und

    Code: Alles auswählen

    regsvr32 purebasicdll.dll
    registrieren möchte, kommt folgender Fehler:
    Bild
    bei Visual Studio ist die DLL als Verweis integriert:
    Bild
    und beim Compilieren mit Visual Studio kommen Fehler bei der Manifest: "
Unerwarteter Fehler bei der ResolveManifestFiles-Aufgabe
Angeblich liegt das daran, dass meine DLL auf eine andere DLL verweist, die natürlich fehlt -> fehlt also ein Purebasic-Teil? Evtl irgendwas mit der Seriellen Schnittstelle?

DLL CODE Beispiel (gleicher effekt wie oben):

Code: Alles auswählen

; simple DLL von Max Aigner, Cartesy

ProcedureDLL DO_Something()
   a.i = 1 ; egal, was in der DLL steht, sie will nicht mit C#
EndProcedure 
Wie habe ich includiert (C#):
  • Die DLL ist NUR als Verweis eingetragen - in der Projektmappe unter "Verweise". Sonst nichts. Auf die Befehle wird gar nicht zugegriffen - es reicht schon, wenn die DLL einfach nur da ist, schon stört sich Visual Studio 2012 daran.
- Purebasic 4.61 -
Wie kann ich Purebasic DLLs in C# einbinden?

Re: Wie DLL in C# einbinden?

Verfasst: 23.10.2013 15:31
von ts-soft
C# erwartet anscheinend ein ActiveX (COM-DLL), sowas produziert PB aber nicht.
Ob und wie das Schaf auch normalle DLLs laden kann, muß Dir jemand anders beantworten.

Re: DLL in C# einbinden?

Verfasst: 23.10.2013 17:20
von Max_der_Held
Ok, also das wird offenbar unterschieden zwischen managed (c#-dlls) und unmanaged (c-dlls).
Ich poste mal doch die genauen Fehlermeldungen von Visual Studio:
Was ist mit diesem Pfad gemeint?
der Pfad in dem das ganze Projekt liegt (auch die DLL) ist:
"C:\Users\max_a_000\Dropbox\Software\Cartesy\0013 Prüfstandsoftware Camera\Camera Plattentester"
Bild

Der Fehler kommt auch, wenn die DLL im C:\ verzeichnis liegt

Re: DLL in C# einbinden?

Verfasst: 23.10.2013 17:43
von ts-soft
Nimm den Verweis aus dem Projekt wieder raus, so kannst Du die DLL nicht laden!

Re: DLL in C# einbinden?

Verfasst: 24.10.2013 09:44
von Danilo
Max_der_Held hat geschrieben:Wie kann ich Purebasic DLLs in C# einbinden?
Du musst die Funktionen importieren, so wie man das auch mit normalen WinAPI-Funktionen über InterOp macht.
Dem C# Projekt kannst Du die DLL nicht hinzufügen, da kein COM.

Hier ein Beispiel mit einer PureBasic DLL die von C# aus aufgerufen wird: Call_PB_DLL.zip

Hoffe es hilft.

Re: DLL in C# einbinden?

Verfasst: 24.10.2013 15:03
von Max_der_Held
Hallo Danilo und ts-soft

Habe jetzt den Eintrag bei "Verweise" einfach rausgetan, und die Befehle geladen, wie im Beispielcode Danilo's dargestellt, und siehe da
-> es geht!
Danke für den ausführlichen Beispielcode Danilo!