none
Resourcen in einer lib

    Frage

  • Hallo NG,

    ich habe paar XML-Dateien als resource in eine lib-Datei eingebunden und würde gern im Code dieser Lib-Datei auf diese resourcen zugreifen. FindResource, LoadResource und LockResource haben nicht funktioniert, da die resourcen nicht in der DLLs zu finden sind, die die Lib-Datei verwenden. Wie kann ich auf diese resourcen zugreifen?

    Danke,

    KS


    Konrad Schiemert

    Freitag, 5. April 2013 12:46

Antworten

  • Das geht auch. Ich habe ein kleines Programm, das erzeugt einen C char-Array aus einer beliebigen Datei.

    Dann wird in den Text so was eingebaut:

    const char aData[] = {
    #include "GeneratedFile.hci"
    };

    Die Datei bekomme eine entsprechende Abhängigkeit und Compiler/Make Regeln und das wars.

    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Montag, 8. April 2013 12:05
    Moderator

Alle Antworten

  • Eine nicht ideale Lösung habe ich schon aus dem Internet: Wenn ich die DLL mit "Linker/Input/Additional Dependecies/<lib-datei-name>.res" kompiliere, enthält die DLL die resourcen und dann kann ich FindResource, LoadResource,... verwenden.

    Falls jemand eine bessere Lösung hat, bitte nicht verschweigen.

    MfG,

    KS


    Konrad Schiemert

    Freitag, 5. April 2013 15:01
  • Lib Dateien können keine Ressourcen halten.

    Der Ressource-Compiler kann keine Libs lesen.

    Ich verwende für solche Fälle immer Dateienmit der Endung .rc2.

    Diese werden als Additional Resources in die Haupt-RC Datei eingebunden.
    Das ist eben ähnlich der Verwendung wie es die MFC macht. Oder wie man eben auch C++-Header einbindet und weiter gibt.

    Du kannst aber natürlich auch einfach eine Text-Ressource in Deinen C Code einbauen und Dir einen Zeiger liefern lassen auf den const char*. Soviel anders ist eine Ressource auch nicht.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Montag, 8. April 2013 06:54
    Moderator
  • Hallo Martin,

    danke für den Tipp. Ich habe inzwischen (auch aus anderen Gründen) aus der lib eine dll gemacht und damit die Sache erledigt.

    > Du kannst aber natürlich auch einfach eine Text-Ressource in Deinen C Code einbauen und Dir einen Zeiger liefern lassen auf den const char*

    das wollte ich vermeiden, damit die XML-Dateien getrennt von C-Code bearbeitet werden können.

    MfG,

    KS


    Konrad Schiemert

    Montag, 8. April 2013 09:11
  • Das geht auch. Ich habe ein kleines Programm, das erzeugt einen C char-Array aus einer beliebigen Datei.

    Dann wird in den Text so was eingebaut:

    const char aData[] = {
    #include "GeneratedFile.hci"
    };

    Die Datei bekomme eine entsprechende Abhängigkeit und Compiler/Make Regeln und das wars.

    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Montag, 8. April 2013 12:05
    Moderator
  • Ja, Du hast Recht. Das ist mir nicht eingefallen...

    Nur die Anführungszeichen müssen dann in der XML-Datei mit \" ersetzt werden und dann sieht die XML-Datei komisch aus, was ich mit XML-Resource vermeiden konnte.

    MfG,

    KS


    Konrad Schiemert

    Montag, 22. April 2013 10:12
  • Da ich echte UTF8 Daten zum Teil drin habe verwende ich hier keinen char String.

    Ich verwende wirklich eine Byte Aufzählung mit Zahlen. Das ist nicht lesbar. Aber es ist ja nur eine Zwischendatei.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Donnerstag, 25. April 2013 08:02
    Moderator
  • Hallo Konrad,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    Danke und viele Grüße,
    Ionut

    Dienstag, 7. Mai 2013 13:23
    Besitzer