DLL-Kompilierung

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    DLL-Kompilierung

    Hallo in die Runde!

    Nach langer Abstinenz komme ich mal wieder mit einem Problem nicht weiter.

    Ich nutze auf einem Media-PC die Software Kodi (früher XBMC).

    Um auf meinem 4x20-Zeichen Display u.a. Titel, Dauer, usw. anzuzeigen, nutze ich das Programm LCDSmartie.

    LCDSmartie und das Display verrichten auch ganz artig zusammen ihren Dienst.


    Das Problem liegt in der DLL, die Kodi und LCDSmartie verbindet:
    Diese prüft nämlich unentwegt, ob Kodi läuft und gibt dann die jeweiligen Werte aus. An sich eine gute Sache, aber dummerweise wird die DLL nicht mehr weiter gepflegt - und früher hieß Kodi nunmal XBMC.
    Und so sucht die DLL jetzt die ganze Zeit nach dem Prozess XBMC.exe, der aber jetzt leider Kodi heißt.
    Eine Zeitlang konnte man sich noch damit behelfen, dass man die Exe einfach in XBMC.exe umbenannt hat, aber das funktioniert jetzt irgendwie auch nicht mehr.

    Der Sourcecode ist zwar verfügbar (archive.codeplex.com/?p=xbmc4lcdsmartie) und ich kann auch die entsprechende Sub ändern - aber ich kriege es einfach nicht hin, eine von LCDSmartie akzeptierte DLL zu kompilieren.
    Ich sitze jetzt schon den ganzen Tag dran, aber entweder es passiert gar nichts, es kommt eine Fehlermeldung (Die Assembly wird von einer Laufzeit erstellt, die aktueller ist als die derzeit geladene Laufzeit) oder die DLL wird einfach so nicht akzeptiert.

    Ursprünglich erstellt wurde sie wohl mit VB2010 - aber vermutlich ist mein PC jetzt mit VB völlig überfordert, nachdem ich ihm zunächst das aktuelle Visual Studio, dann VB2008 und dann auch noch 2010 installiert habe - jedenfalls bricht die Kompilierung immer ab, da in der Projektdatei wohl nicht gespeichert werden kann.


    Den Mediapc habe ich auf Windows10 laufen.... kann es vielleicht sein, dass das mit irgendwelchen Adminrechten oder Zugriffsrechten rumzickt?


    Hat vielleicht irgendwer die Möglichkeit, mir die o.g. DLL anzupassen und zu kompilieren? :(
    Ich möchte doch einfach nur mein Display wieder betriebsbereit haben :)


    Vielen Dank!!

    Chris
    Erstmal gaaaaanz vielen Dank für die Anpassung!!!

    Langsam wird es schräg!
    Nachdem ich Deine DLL eingefügt habe, lief es ein Mal zumindest soweit, dass die Abfrage nicht mehr mit "XBMC not Running" beendet wurde.
    Dann wurde allerdings im Display angezeigt: "Ein Aufrufziel hat einen Ausnahmefehler verursacht. Das Konfigurationssystem konnte nicht initialisiert werden."

    JETZT allerdings nach einem Neustart (ohne weitere Veränderungen) kommen direkt Fehlermeldungen, die auch andere DLLs betreffen:

    Bilder
    • Fehler.png

      155 kB, 1.093×560, 138 mal angesehen
    @ChrisFTB Die fehlenden DLLs sollten entweder im Verzeichnis des Programms oder in einem der Verzeichnisse der Umgebungsvariablen Path liegen.
    Ist das der Fall?
    Kopiere sie im Zweifelsfalle neben die aufrufende DLL.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die DLLs sind am richtigen Ort - Ich VERMUTE, dass es irgendwas mit verschiedenen Dot.Net Versionen zu tun haben könnte?! Er meckert ja über "aktueller" - es ist das erste Mal, dass ich das System auf Windows 10 in Angriff nehme.... nicht, dass es jetzt da an irgendwelchen neuen Rechten usw liegt - von sowas hab ich nämlich so GAR keinen Plan :D

    ChrisFTB schrieb:

    Ich VERMUTE, dass es irgendwas mit verschiedenen Dot.Net Versionen zu tun haben könnte?!
    Die Framework-Version einer aufrufenden Assembly muss größer/gleich der Framework-Version der aufgerufenen Assembly sein.
    Schraub mal die Version Deines Programms und ggf. die der DLL nach oben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Schraub mal die Version Deines Programms und ggf. die der DLL nach oben.


    LCDSmartie liegt zwar als Quellcode vor, ich selbst habe aber viel zu wenig Ahnung, da irgendwas hochzuschrauben.
    Aber wie kann es denn sein, dass es vor dem Neustart lief und direkt danach, 2min später, ist da was inkompatibel?!

    Ich bin ja schon von der schnellen DLL-Anpassung von Bluespide beeindruckt, ich habe da gestern nen ganzen Tag rumgedoktort und mir letztendlich nur mein Windows zugemüllt :(

    Edit: ich habe die Fehlermeldung jetzt wieder und wieder gelesen (ist nicht so leicht zu verstehen - finde ich). Ich denke aber, ich habe es jetzt verstanden, bitte verzeiht mein laienhaftes Ergebnis:

    Wenn ein Programm (LCDSmartie) eine Bibliothek (XBMC4LCDSmartie.dll) aufruft, dann muss das Programm das aktuellste Framework verwenden, da es sonst eine Bibliothek mit höherem Framework nicht "versteht" und verwenden kann.

    Oder in Worten der Fehlermeldung mit Verständnisergänzungen gesprochen:

    "Die Datei oder Assembly "XBMC4LCDSmartie.dll" oder eine Abhängigkeit wurde nicht gefunden. Die Assembly ( <- XBMC4LCDSmartie.dll) wird von einer Laufzeit (z.B. DotNet-Framework 4.0) erstellt, die aktueller als die derzeit (vom Hauptprogramm LCDSmartie) geladene Laufzeit (z.B. 3.5) ist und kann (deshalb) nicht geladen werden. (Und aus diesem Grund wurde sie nicht gefunden!)"

    Richtig verstanden?? :)


    In meinem Fall heißt das: wenn ich eine Version von LCDSmartie hinbekomme, die zB ein 4.0-Framework verwendet, dann sollte es laufen?

    Edit 2:
    Leider doch kein Quellcode von LCDSmartie - und selbst wenn, dann wäre er in Delphi.

    Was wäre, wenn die XBMC4LCDSmartie.dll einfach ne kleinere Framework-Version bekommt (z.B. 3.5 oder noch kleiner) ?








    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ChrisFTB“ ()

    ChrisFTB schrieb:

    ich selbst habe aber viel zu wenig Ahnung, da irgendwas hochzuschrauben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!