Veriablenzugriff über symbolischen Namen
-
Hallo,
ich habe eine Frage:
Beispiel kleine DLL in der es globale Strukturen mit ein paar Variablennamen gibt.
Diese Strukturen werden per __declspec(dll_export) exportiert und ich kann in der Anwendung auf den Inhalt der Strukturen mit z.B. "struktur.wert1" zugreifen.Nun möchte ich aber in einem ini-file angeben, welche Werte der DLL ich auslesen möchte: zB.
struktur.wert1 struktur.wert3
Die Anwendung soll dieses Ini-File parsen und entsprechend die Werte aus der DLL anzeigen. Wie kann ich das realisieren? Irgendwie muss ich die symbolische Information ja beim DLL generieren ablegen. Dann müsste die Anwendung über den Namen die Adresse herausbekommen und den Wert an der Adresse aus der DLL auslesen. Gibts dafür eine Systemroutine oder muss ich das MAP-File parsen, die Struktur parsen um daraus eine relative Adresse innnerhalb der Struktur zu ermitteln und so auf den Wert zugreifen?
Danke für eure Hilfe...
Robert
-
Wenn Du den Source der DLL hast könntest Du Get Funktionen erstellen.
GetStrukturWert1(char *Buffer, int BufferLen) {
// Fülle den Buffer
}Die Funktion GetStrukturWert1() kannst Du in der DLL mit GetProcAddress() über den Namen suchen. Daran das die Strukturen nach der Kompilierung noch die menschlesbaren Namen haben kann ich nicht so recht glauben.
Du könntest auch jeder Ressource in der DLL eine ID geben und dann in die Ini Datei nur die IDs schreiben. Dein Programm würde dann anhand der IDs wissen was aus der DLL ausgelesen werden soll.