www.mikrocontroller.net

Forum: PC-Programmierung Universelle DLL


Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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(...

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...

Autor: 6645 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.