Am Scheideweg ...



  • So, mein Projekt (VS2013) funktioniert, ist soweit fertiggestelt und die Alphaversion zum ersten Test ausgeliefert, verpackt in einem schicken Setupprogramm dank des grandiosen Inno Setup.

    Nur ... es ist Kraut und Rüben, von allem etwas, C++, C++/CLI, managed und unmanaged und weiß der Teufel was noch alles, deshalb erwäge ich es neu aufzusetzen. Es ist nix weltbewegendes, zwei Forms mit einigen Controls und Bilderkennung, aber ich möchte es halt sauber implementieren. Die Anforderungen halten sich in Grenzen:
    - muss mit opencv laufen sein
    - "eingebaute" mehrsprachigkeit
    - unter Unix/Linux mit möglichst wenig Anpassungsaufwand

    Soweit ich das überblicke habe ich folgende Möglichkeiten:

    Entwicklung unter C#
    Für opencv gibt es einen C#-Wrapper [urlhttp://www.emgu.com/wiki/index.php/Main_Page]Emgu[/url], für Linux gibt es die die .Net Laufzeitumgebung Mono, unter welcher (wollen wirs hoffen) das Projekt im Grunde ohne Anpassungen lauffähig wäre. C# müsste ich noch vernünftig lernen, das gilt für die nächste Möglichkeit wohl auch.

    Entwicklung unter Qt oder GTK+
    Das ist offenbar reines C++, ohne Anpassungen auf Linux (vlt. sogar OS-X) lauffähig. Hier ist mir aber nicht klar, ob diese Bibliotheken Funktionen wie den "backgroundworker" anbieten bzw. wie man das umsetzen könnte.

    Das ist mein erstes Projekt auf diesem Gebiet, deshalb: hat jemand einen Rat, Empfehlung, pro & contras für mich?



  • Sind halt beides völlig valide Möglichkeiten, mach was du willst.



  • Wenn du für Linux u.ä. entwickeln willst, dann versuch dich von C# zu lösen.



  • Andromeda schrieb:

    Wenn du für Linux u.ä. entwickeln willst, dann versuch dich von C# zu lösen.

    Hallo Andromeda,

    die Antwort würde ich pauschal so nicht stehen lassen. Man kann auch gute Programme für Linux schreiben, wenn man C# verwendet. Das hängt halt immer von den Aufgaben des Programmes ab. Ich sehe erstmal keinen Grund warum man das von vornherein ausschließen muss.

    Meines Erachtens nach ist das für ein einfaches Programm zum Beispiel schneller erledigt, als ein C++ Programm mit QT.

    Eine Installation von Mono auf dem Linux System ist ja auch nur erforderlich wenn man es nicht statisch einbindet (War hier im Forum irgendwo erst im Gespräch).

    Hallo deejey,

    nimm am besten das was dir am besten liegt. Bei C# mit Mono hättest du alles, was das Mono-Framework zu bieten hat. Bei C++ mit QT bist du jedoch ungebunden. Musst also z.B. keine Brücken bauen durch z.B. festes einbinden von Mono ins Projekt.



  • inflames2k schrieb:

    Eine Installation von Mono auf dem Linux System ist ja auch nur erforderlich wenn man es nicht statisch einbindet (War hier im Forum irgendwo erst im Gespräch).

    ach so, das kann man von vornherein einbinden, vermutlich eine Art Mapping für Verzeichnisnamen, Dateinamen/Extensions usw.

    Hallo deejey,

    nimm am besten das was dir am besten liegt. Bei C# mit Mono hättest du alles, was das Mono-Framework zu bieten hat. Bei C++ mit QT bist du jedoch ungebunden. Musst also z.B. keine Brücken bauen durch z.B. festes einbinden von Mono ins Projekt.

    Ich weiß noch garnicht genau was mir liegt, komme aus der Host-Entwicklung 🙂 die jetzige Umsetzung jedenfalls gefällt mir garnicht, was auch an den zusammengetrümmerten Codeschnippseln liegt, die nie so richtig zusammen passten. Beispiele: herausfinden der Cam-Klarnamen (die aus dem Gerätemanager), oder mehrfachen Programmaufruf verhindern, das war ein Kampf alles zusammenzufrickeln, das wird unter Linux bestimmt ganz anders sein 🕶

    C# wäre mir am liebsten, aber das ist nur vom Gefühl her ohne es klar begründen zu können. Ich denke ich versuche mit einem Miniprojekt (eine Form, Kamera auswählen, Frames einlesen und verarbeiten) nach und nach beide Wege, mal sehen was sich besser "anfühlt".



  • Mechanics schrieb:

    Sind halt beides völlig valide Möglichkeiten, mach was du willst.

    ok

    Andromeda schrieb:

    Wenn du für Linux u.ä. entwickeln willst, dann versuch dich von C# zu lösen.

    Nein, Windows wird immer das führende System für mich sein.



  • deejey schrieb:

    inflames2k schrieb:

    Eine Installation von Mono auf dem Linux System ist ja auch nur erforderlich wenn man es nicht statisch einbindet (War hier im Forum irgendwo erst im Gespräch).

    ach so, das kann man von vornherein einbinden, vermutlich eine Art Mapping für Verzeichnisnamen, Dateinamen/Extensions usw.

    Nicht ganz. Es dient eher dazu, dem Benutzer keine Mono-Installation aufzuzwingen - die Runtime läuft dann quasi in deinem Programm, und nur darin. Weitere Details dazu: Mono Projekt Ohne Mono Installation auf Linux ausführen



  • ok, so hatte ich es auch verstanden, oben nur zu vereinfacht geschrieben, gut diese Option zu haben.



  • Sowas wäre unter Linux unüblich und ich würds auch nicht gut finden. Man baut eher Pakete und definiert Abhängigkeiten und die abhängigen Pakete werden mitinstalliert. Das ist immer noch besser, als die Abhängigkeit zu verstecken und ein sehr großes Paket anzubieten. Vielleicht hat der Benutzer Mono eh schon drauf oder die Abhängigkeit würde ihn nicht stören. Und wenn ihn das tatsächlich stört, findet er sowieso raus, dass du Mono verwendest und schmeißt dein Programm wieder runter bzw. installiert das erst gar nicht.



  • Das verstehe ich schon, es ging mir auch nicht ums Verstecken sondern um eine Option, die zur Not auch funktioniert bis das Produkt endgültig fertiggestellt ist.


Log in to reply