DLL Datei in Programm



  • Hallo,

    ich habe ein Problem beim Packen meines Programms. Ich habe ein Plugin geschrieben für ein Programm das auf eine externe Bibliothek zugreift. das ganze ist also über eine Shared Library kompiliert. Jetzt liegt mein Plugin aber nicht direkt im Hauptverzeichnis, so dass das Programm beim starten abschmiert und natürlich nach der Datei sucht.

    Ich möchte jedoch die Shared Library mit in meinen Pluginordner packen und den Benutzer nicht damit quälen es vorher ins Hauptverzeichnis zu kopieren. Hat wer eine Idee wie ich das machen?

    Beispiel:

    ../AfterEffects/ae.exe
    ../AfterEffects/PlugIns/mein_plugin/test.dll
    ../AfterEffects/PlugIns/mein_plugin/plugin.dll

    so wäre mir die Anordnung am liebsten. Danke euch für jeden Tipp.



  • Äh. Auch doof.
    Geht es denn so nicht?

    Du kannst natürlich LoadLibrary verwenden. Dazu ermittelst du zuerst den Pfad deiner DLL (das geht über das Instance-Handle, welches du wiederum in DllMain mitgegeben bekommst, bzw. über diverse Tricks auch so ermitteln kannst). Dann ersetzt du den Filenamen-Teil durch "test.dll", und übergibst den Pfad an LoadLibrary.
    Natürlich musst du dann die Einsprungpunkte "per Hand" mit GetProcAddress holen.


  • Mod

    Die andere Möglichkeit wäre ein Manifest zu verwenden. Dann müsste das Unterverzeichnis aber wie das Assembly heißen.



  • Hi!

    Das heißt, ich brauch von dieser Bibliothek auch die Library? :-o.
    Und wenn ich das Manifest nutze ist das auch nicht soo optimal, den es klingt so, als ob der Assembly Name nicht gerade attraktiv ist, oder?

    Anscheinend bleibt mir da nicht allzu viel übrig das in einem gewissen Rahmen hinzubekommen. hatte zuerst an ein Plugin gedacht dass im voraus geladen wird und eine Umgebungsvariable setzt, aber leider werden alle Plugins gleichzeitig geladen.


  • Mod

    Manifest gehen halt auch erst ab XP/2003. Aber daafür erlauben Sie die Steuerung elegant.
    http://msdn.microsoft.com/en-us/library/aa374182(VS.85).aspx
    Siehe privatePath Eintrag!



  • Ich danke dir!


Anmelden zum Antworten