DLL in C# einbinden?

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

DLL in C# einbinden?

Beitrag 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?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Wie DLL in C# einbinden?

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: DLL in C# einbinden?

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: DLL in C# einbinden?

Beitrag von ts-soft »

Nimm den Verweis aus dem Projekt wieder raus, so kannst Du die DLL nicht laden!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: DLL in C# einbinden?

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: DLL in C# einbinden?

Beitrag 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!
Antworten