DMXC-Plugin mit C++ schreiben

We proudly present: The release of DMXControl 3.3.3!


On September 29, 2026, we held our release show for DMXControl 3.3.3. During our usual “hour-long” session, we showed you all the new features in this version and what it now has to offer.
Read all about it in the corresponding news article: We proudly present: The release of DMXControl 3.3.3!


  • Hallo zusammen,
    Ich würde gerne ein DMXC-Plugin in C++ schreiben, da dies die einzige .NET-Sprache ist, die ich gut beherrsche. Da ich allerdings nur sehr begrenzte erfahrungen mit .NET habe (arbeite hauptsächlich mit Qt), wäre meine Frage, ob es nicht jemanden gibt, der das, was in dem Tutorial für VB.NET bereits gezeigt wird, in C++ "Übersetzten" kann. Ich denken, dass ich nicht der Einzige bin, der damit etwas anfangen kann.
    Liebe Grüße
    Niklas

  • Hallo,
    vielleicht ist es möglich, ein Plugin für DMXC in C++ zu schreiben, aber ich befürchte, das wird ähnlich sein wie mit Delphi und da geht es nicht (oder nur sehr eingeschränkt). Schuld daran ist VB6 (so die Entwickler), denn es kommt hier intern zu Problemen, wodurch man zwar die DMX-Werte auslesen kann, aber keinen Zugriff auf die interne Struktur bekommt. Das geht so viel ich weiß nur mit VB6. Daher kann man z.B. mit Delphi Ausgabeplugins schreiben, die DMX-Werte empfangen (habe ich auch schon), aber keine Plugins, die auch Werte an DMXC übergeben.
    Viele Grüße
    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

  • Danke für deine schnelle Rückmeldung. Allerdings glaube ich nicht, dass es auf der .NET-Ebene bei der verwendung von C++ zu Problemen kommt, da es hierfür extra einen MS-Compiler (in Visual Studio 2010/2012 integriert) gibt. Bei Delphi könnte das Problem darin liegen, dass es nicht von MS entwickelt wurde und daher den .NET-Standart evtl. nur teilweise unterstützt.
    Gemäß
    der Aussage von Microsoft ist es jedenfalls möglich, mit sämmtlichen .NET-Konformaen Sprachen ineinander übergreifend zu arbeiten (VB.NET, C# und C++).

  • Das Problem ist doch aber, das VB6 keine .NET-Sprache ist, denn das ist doch die letzte Version vor der Einführung von .NET. Ich weiß es nicht genau (weil ich VB nicht programmieren kann), aber wurden nicht mit .NET einige tiefgreifende Änderungen an VB durchgeführt, wodurch VB6 nicht wirklich kompatibel zu .NET ist, oder täusche ich mich da?
    Viele Grüße
    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

    Edited once, last by JPK (August 14, 2012 at 1:10 AM).

  • Hallo Niklas,
    ich habe das auch mal probiert, allerdings mit C#,
    dürfte kein großartiger Unterschied zu C ++ sein.

    Allerdings bin ich gescheitert. :(

    Und helfen konnte mir im Forum auch keiner, auf meinen
    Post habe ich bis heute keine Antwort erhalten.

    Die Lösung des Problems ist ja COM-Interop, womit
    es, laut Microsoft, Möglich sein sollte eine komplette
    Kommunikation über die alten COM Schnittstellen zu
    simulieren.

    Gruß Uwe

  • Ich habe mal einen kleinen Versuch gemacht, da ich eine Idee hatte und mal wissen wollte, ob das geht. Theoretisch geht das schon, aber es ist nicht wirklich trivial.

    Mein Lösungsansatz war folgender:
    DMXC -> VB6-WrapperPlugin -> COM -> .Net (C#)

    Ich habe in .Net eine Com-Component gebaut, welche ich dann in einem VB6 Wrapper plugin eingebunden habe. Dieses Plugin macht nichts weiter, als die Aufrufe von der DMXC-API an .Net weiter zu geben. Es wird als Bootstrapper für .net verwendet und das hat soweit auch geklappt.

    Da ich das aber nicht weiter benötigte und ich das nur aus Neugierde mal geschrieben habe, hat sich das auch wieder erledigt.

    Unmöglich ist nichts, aber schwierig ist es auf jeden Fall ohne VB6-Compiler ein Plugin zu bauen.

    Greets
    Phips

  • Hallo Phips,
    vielleicht könntest Du das WrapperPlugin ja der Allgemeinheit
    zur Verfügung stellen, eventuell mit einem kurzen Beispielprogramm,
    das würde dann wohl einige bewegen wieder Plugins zu programmiern
    und das Projekt 2.xx wieder einen Schritt weiterbringen.

    Deine Ausführungen kann ich dann gerne in das neue Wiki, integrieren

    Gruß Uwe

  • Hallo Uwe

    Kein Problem. Ich habe die relevanten Files ins ZIP im Anhang gepackt. Es handelt sich nicht um die kompletten Projekte, was auch etwas sinnlos wäre, da es mehr Skeletklassen sind, welche nicht wirklich implementiert sind. Mein letzter Test war soweit, dass ein Config-dialog auf ging und die NLOG-Meldungen auch ankamen. Somit hat der .Net Bootstrap geklappt.

    Wichtig hierbei ist:
    Die beiden C# Files sind die Com-Komponente. Nicht vergessen, dass das C#-Projekt als Com-Projekt markiert sein sollte. Alternativ kann die DLL auch mit regasm.exe manuell registriert werden. Die Guid-Attribute auf dem Interface und der Klasse sollten geändert werden! Die Implementation kann als Skeleton verwendet werden.

    Die restlichen Files sind das VisualBasic6 Projekt, welches in diesem Fall ein Output-Plugin implementiert. Die Idee war hier die DMX-Ausgabe an einen WCF-Service zu senden. Da es aber ArtNet gibt, war das ne interessante Idee, mehr aber auch nicht.

    Es gibt auch auf der DMXC-Homepage unter http://www.dmxcontrol.de/downloads/plugins.html diverse Plugins mit Quelltext, welche zum Abschauen verwendet werden können. Unter http://www.dmxcontrol.de/wiki/Kategorie:Pluginentwicklung finden sich diverse Seiten, die sich mit Plugins und deren Entwicklung befassen.

    hope this helps

  • Hallo Phips,
    danke erstmal, ich werde es mir in den nächsten Tagen mal anschauen
    und sehen ob ich es nachvollziehen kann.

    Ich bin jetz nicht der Superprogrammierer, habe zwar schon das ein oder
    andere in C# geschrieben. Aber da hatte ich noch nicht viel mit Kommunikation
    zu tun.

    Ich nehme mal an, das es den meisten so geht. ;)

    Wenn ich da durchblicke, werde ich es mal für 08/15 Programmierer
    Dokumentieren.

    Gruß Uwe

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.