Ressourcen-Dll in .Net Projekt laden



  • Hallo,

    ich habe eine DLL, die Ressourcen für verschiedene Sprachen enthält, bekommen.
    Die DLL ist mit normalem C++ erstellt worden.
    Die Dll wurde in einem anderen C++-Projekt mittels LoadLibrary geladen.

    Diese möchte ich jetzt gerne in meinem .Net-Projekt laden.
    Nur hab ich keine Ahnung, wie ich das anstelle?

    Könnt ihr mir vielleicht ein paar Tipps geben???

    mfg

    plugnpray



  • LoadLibrary?



  • Okay, das klappt.
    Hatte nur ein paar andere Fehler drin.

    Mein nächstes Problem ist aber, wie kann ich für eine bestimmte Sprache, beispielsweise Spanisch, die entsprechende Ressource bekommen?
    Mit LoadString bekomme ich immer nur die Ressource in der Systemsprache.
    Kann ich im Programm die Sprache kurzzeitig umstellen?

    Wenn ja, wie?
    Oder wenn nein, wie kann ich die Ressourcen für die anderen Sprachen auslesen?

    mfg

    plugnpray



  • Hab's hinbekommen.

    Für die, die's interessiert:

    String Filelocation="";//Pfad der Datei
    LPCWSTR pszFileName = static_cast<LPCWSTR>
                 (Marshal::StringToHGlobalUni(Filelocation).ToPointer());
    
    CAtlString s;
    WORD langid = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN);
    HINSTANCE h = ::GetModuleHandle(pszFileName); // use DLL's handle
    if (!h)
    	h = LoadLibraryEx(pszFileName, 0,DONT_RESOLVE_DLL_REFERENCES);
    
    s.LoadString(h, 2,langid);//2=Ressourcen-ID
    


  • Nur so als kleiner Kommentar zu dem DONT_RESOLVE_DLL_REFERENCES aus der Hilfe zu LoadLibraryEx:

    If you are planning only to access data or resources in the DLL, it is better to use LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE or LOAD_LIBRARY_AS_IMAGE_RESOURCE or both.


Anmelden zum Antworten