standalone mit externer .dll



  • Hallo zusammen,

    ich habe ein Projekt in der in die mchpusbapi.dll verwende. Kompiliere das Projet und ziehe die erstellte .exe Datei aus dem Ornder -> Felhermeldung: konnte mchpusbapi.dll nicht finden

    Habe auch schon in den FAQ unter standalone.exe

    Hi,

    ist ziemlich simple.

    Geh einfach in die Projekt - Optionen.

    Da deaktivierst du unter
    1.Registerkarte Linker:
    - dynamische RTL verwenden
    2. Registerkarte Packages
    - mit Laufzeit-Packages kompilieren

    Voila

    Gruss Alex

    probiert. Gehr aber nicht. Wie kann ich das lösen?

    lg,
    blitzgeist



  • Hi,

    kopier die dll die du da verwendest mal in das gleiche Verzeichnis aus dem du die exe startest. Dann sollte es gehen.....

    mfg
    Tom



  • ja, dann gehts, aber dann muss ich immer die dll mit in den ordner kopieren. kann ich nicht irgendwie in den projekteinstellungen was ändern damit die dll mit in das projekt "einfließt"? Möchte am Ende nur die .exe datei haben.

    lg,
    blitzgeist



  • Hallo

    Wenn du nur die DLL hast geht das nicht anders. Die Optionen auf die sich die FAQ bezieht betrifft nur Builder-Packages, wo der Compiler die Wahl hat zwischen "Quellcode" und fertiger DLL. Du hast nur eine DLL, der Compiler kann daraus nichts rausholen.

    bis bald
    akari



  • Man könnte die DLL in C:\Windows\System32 packen... 🙄



  • Hallo zusammen,
    gibt es also keine Möglichkeit, in den Projekteinstellungen dem Compiler zu sagen, dass er die mchpusbapi.dll in das Projekt einbinden soll und eine .exe daraus macht? Was ist mit der Idee von WebFritzi? Wie mache ich das die dll in System32 packen. Verstehe jetzt darunter einfach in diesen Ordner kopieren... Damit hat sich aber nicht die Sache, oder?

    lg,
    blitzgeist



  • Hallo

    Wio du die DLL hinkopierst ist egal. Hauptsache dein Programm findet sie.
    Und nein du kannst keine Funktionen aus DLLs herauschneiden und in dein Programm transferieren. Überleg doch mal das diverse Funktionen und Symbole sich untereinander brauchen. Es müßte also im schlimmsten Fall ein ganzer Rattenschwanz mit kopiert werden.

    bis bald
    akari



  • WebFritzi schrieb:

    Man könnte die DLL in C:\Windows\System32 packen... 🙄

    Jawoll, und damit Administratorenrechte voraussetzen und das System unnötigerweise zumüllen.
    Aber das ist mit Vista glücklicherweise vorbei. Einer der wenigen positiven Aspekte, die ich dem neuen System abgewinnen kann - es läßt schlechte Programmiertaktiken gnadenlos scheitern 👍

    Zum Thema: wenn du die DLL dynamisch lädst, kannst du sie z.B. in eine Ressource packen, bei statisch gelinkten DLLs geht das allerdings so nicht.
    Eine andere Möglichkeit wäre noch, mittels WinRAR o.ä. eine selbstextrahierende Datei zu erstellen, die dein Programm und die DLL enthält und beim Start automatisch in die temporären Dateien entpackt. Auch das ist aber nur ein Workaround - bei größeren Projekten ist das Beilegen einer oder mehrerer DLLs i.d.R. unvermeidlich.



  • Hallo audacia und andere,

    ich dachet mir nun dass ich einen Installationswizard erzeuge, der mit meine GUI.exe an eine vom User ausgehählte stelle kopiert und die zazugehörige DLL in C:\Windows\System32 kopiert. Somit bekommt der User vom Dasein der DLL nichts mit, und wenn man das Projekt auf einem anderen PC ausführen möchte muss man es eben erst installieren, über den Installationswizard. Nun meine Frage: es gibt doch bestimmt ein Wizard zum Erstellen eines Installationswizzard, oder? Ich habe in Erinnerung, dass ein Kollege von mir so ein Installationswizzard ohne großen Aufwand erstellt hat. Leider kann ich ihn nicht mehr kontaktieren. Was wisst ihr über einen Wizard zum Erstellen eines Installationswizzard?

    lg,
    blitzgeist



  • Hallo

    Bei einigen Builder-Versionen ist bereits InstallShield dabei. Hast du das nicht kannst du auch entsprechende Freeware wie InnoSetup benutzen.

    bis bald
    akari



  • Nimm NSIS. Ich habe auch längere Zeit gesucht und bin damit voll zufrieden. Du hast da etliche Möglichkeiten. Man muss ein Skript erstellen, um einen Setup-Wizard zu generieren. Dabei schafft "HM NIS Edit Script Wizard" von HMSoft Abhilfe. Ist kostenlos und erstellt dir das Skript so wie du es haben willst.



  • blitzgeist schrieb:

    ich dachet mir nun dass ich einen Installationswizard erzeuge, der mit meine GUI.exe an eine vom User ausgehählte stelle kopiert und die zazugehörige DLL in C:\Windows\System32 kopiert. Somit bekommt der User vom Dasein der DLL nichts mit

    Und was hat der User davon, 1. im Programmverzeichnis nicht alle für die Ausführung des Programmes benötigten DLLs, sondern nur die .EXE-Datei zu sehen, und 2. für den Fall, daß er wissen möchte, welche DLLs für die Ausführung der Anwendung benötigt werden, erst Dependency Walker bemühen zu müssen?

    Und daß dein Programm dann ohne Administratorenrechte nicht mehr installiert werden kann und du das System deines potentiellen Kunden unnötig zumüllst - denn eine DLL, die nur von einem Programm benötigt wird, hat in system32 nichts verloren - ist dir auch klar, oder?
    Für mich wären das schon ausreichende Gründe, das Programm nicht zu benutzen. Auch daß ein Programm, das nur aus einer .EXE und einer .DLL besteht und offenbar keiner weiteren Systempräparation bedarf, mit einem Installer kommt, würde mich abschrecken.

    Kurz gesagt - nicht systemrelevante Programmteile haben im Windows-Verzeichnis nichts verloren!



  • audacia schrieb:

    nicht systemrelevante Programmteile haben im Windows-Verzeichnis nichts verloren!

    Da hat er recht. Kann man nichts anderes sagen.


Anmelden zum Antworten