Forum: PC-Programmierung Universelle DLL


von Hermann G. (hahgeh)


Lesenswert?

Hallo,

ich möchte in C++ eine DLL zur Ansteuerung eines Gerätes schreiben, die 
in möglichst vielen Programmiersprachen eingebunden werden kann.
C++, VB, Delphi, Java und LabView sollten schon funktionieren.
Nun ist die Frage welche Datentypen darf ich in den Funktionen 
verwenden? Klassen kann man ja sowieso ausschließen denke ich. Wie sieht 
es vor allem mit Strukturen oder Zeiger auf Strukturen aus? In einem 
anderen Beitrag habe ich gelesen, dass Basic kein ULONG kennt?

VDiVumfG
hahgeh

von markus (Gast)


Lesenswert?

hallo,

also, ich weiß nicht, ob ich dir da so wirklich weiterhelfen kann, aber 
ich konnte erfahrungen in c++ in verbindung mit vb6 machen. wenn du eine 
c++-dll in vb6 verwenden willst, brauchst du eine tlb-datei (type 
library), welche die deklarationen enthält. dann kannst du auch structs, 
enumerationen und dgl. verwenden.

gruß markus

von Jorge (Gast)


Lesenswert?

Das ist alles kein Problem. Falls Basic kein ULONG kennen sollte wäre 
das wurscht, dafür gäbe es einen "Workaround".
Es geht aber alles in VB:
http://msdn2.microsoft.com/en-us/library/9zsfkcew(VS.80).aspx

In Java verhält es sich grundsätzlich anders mit den DLLs (Native 
Interface), also schreibst du für jede Schnittstelle und für jede 
Programmiersprache ein eigenes Dings was dein Projekt wieder so ziemlich 
in Frage stellt.

Tipp: Mach es nur für VB und dann schau weiter. MS hat "COM" als 
universelle Schnittstelle konzipiert. Das ist zunächst ein Schock aber 
zum Glück gibts da einen "Wizard" der dir alles abnimmt. Hinterher ist 
deine Registry dann voll mit unnützem Zeugs und die Vorstellung davon 
ist schon grausig...

von 6645 (Gast)


Lesenswert?

Wichtig ist vorneweg die Charakteristiken der anzuflanschenden Sprachen 
zu kennen, da das interface ueber Text geht. Als Beispiel, viel gesehen 
in C :

// variablen deklaration
 double Double;
 int    Int;

kommt ganz schlecht an bei nicht case sensitiven Sprachen.
Heisst eine DLL, die solches im Header hat kann man in die Tonne werfen.

von Hermann G. (hahgeh)


Lesenswert?

Vielen Dank für die Antworten,

die genannten Dinge werde ich dann erstmal berücksichtigen. Die fertige 
DLL muss ich dann sowieso in allen Systemen ausprobieren.

von Frank L. (franklink)


Lesenswert?

Hallo Günther,
lege die DLL in C++ als ActiveX-Bibliothek an. Dann brauchst Du Dir um 
die Type-Konvertierung zwischen den unterschiedlichen 
Entwicklungssprachen keine Sorgen machen.

Die einzelnen in der Bibliothek angelegten Interface fungieren dann wie 
Klassen.

Gruß
Frank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.