Problem mit String Ressourcen
-
Ich arbeite mit Visual Studio 2005 Standard und will in ein C++ DLL Projekt eine String Resource einbinden. Das ganze moechte ich haendisch machen, weil es diese Strings von einem alten Projekt schon gibt. Nun findet er mir die Resourcen aber nicht.
Ich habe mir eine neue String Resource vom Assistent erzeugen lassen und dann die resource.h und die .rc Datei händisch mit meinen Strings gefüllt. Wenn ich sie mir dann im resourcen editor anschaue sind alle da. Sie haben alle die Richtigen IDs und auch die Strings werden richtig dargestellt.
Jetzt includiere ich die resource.h und versuche dann mit LoadString einen dieser Strings zu holen. und bekomme ueber GetLastError einen Fehlercode 1814 (The specified resource name cannot be found in the image file) zurueck.Ich habe jetzt auch schon mit einem kleineren Projekt (das Orginal sind ein paar hundert defines) versucht das ganze nachzubauen. Wenn ich in dem kleine Projekt die Zahlen der defines in der resource.h haendisch aendere bekomme ich den gleiche fehler. Wenn ich dann aber neu erstellen mache findet er mir die strings wieder. Im grossen original funktionert das leider nicht.
weiss jemand rat??? vergesse ich im vs2005 irgendwas einzustellen???
schon ma dankegreetz tobi
-
Vermutlich hast Du nicht das *richtige* "hInstancse" dem LoadString übergeben!
Vermutlich hast Du das der EXE übergeben (oder GetModuleHandle(NULL)) und nicht das der DLL!Wenn der Code vom LoadString-Aufruf *innerhalb* der DLL steht, kannst Du die "__ImageBase" Variable verwenden...
http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx
-
Danke vielmals.
das ich auf die exe verweise habe ich gestern abend auch noch rausgefunden. aber danke fuer den tip mit der variablen. Aber irgendwie funktionert das nicht. ich bekomme die ganze Zeit fehlermeldungen, error C2378: 'IMAGE_DOS_HEADER': Neudefinition; Symbol kann nicht mit typedef überladen werden und noch ein paar mehr. muss ich noch irgendwelche header einbinden???
-
Wo ist denn in dem Beispiel ein Typedef???
EXTERN_C IMAGE_DOS_HEADER __ImageBase; #define HINST_THISCOMPONENT ((HINSTANCE)&__ImageBase)
Wo wird hier IMAGE_DOS_HEADER definiert?
-
IMAGE_DOS_HEADER ist ein typedef. des structs _IMAGE_DOS_HEADER und erst sagt mir wohl, dass ich das neu definiere. Ich habs selber nicht gesehen, sonst haette ich nicht gefragt.
Habs aber gefunden. ein #include <windows.h> an der richtigen stelle hat das problem geloest.
danke