Funktionen Speichern/Laden
-
Hi,
ich versuche mich momentan etwas im Thema Extensions und co.
In der Regel (also so stell ich mir das jedenfalls vor) ist eine Extension eine Funktion die gespeichert ist in einer DLL oder sonst wo.
Also hab ich mir gedanken gemacht wie man eine Funktion zu speichern und laden kann (psoido):
// Einladen float (*TestFunktion)(float value) = NULL; int main (void) { std::fstream File ("test.txt", std::ios::in); File.read((const char*)&TestFunktion, File.size()); return 0; } // Speichern float TestFunktion(float value) { return (value*value); } int main (void) { std::fstream File ("test.txt", std::ios::out); File.write((const char*)&TestFunktion, sizeof(&TestFunktion)); return 0; }
Würde das Funktionieren? Wenn ja, wie genau, wenn nein: warum nicht und wie würde es anders funktionieren?
-
Hallo,
Also so wie dus jetz geschrieben hast würde es wohl nicht funktionieren.
Aber so ähnlich läuft es ab. Es gibt OS-abhängige funktionen, die dir ermöglichen eine shared lib zu laden. Und es gibt Funktionen die dann die benötigte Funktion ausfindig machen. Das ist aber wie gesagt OS-abhängig und gehört nicht zum C++ standardrepatoir. Aber im großen und ganzen läufts so ähnlich ab wie du gesagt hast, nur eben nicht mit den standard streams.
-
ist das wirklich unmöglich eine Funktion in eine TXT zu schreiben und später wieder auszuladen ohne OS funktionen oder ist das ohne viel schwerer?
Weil ich möchte das wenn es funktioniert schon recht portabel machen ohne libs oder DLLs und so ein kram
-
Hallo,
naja im prinzip sind shared libs ja auch nur (binär)Dateien, aber die enthalten fertig compilierten Code in einem ganz bestimmten Format. OS-unabhängig wirst du das nicht so einfach hinbekommen.
-
mist... sonst keine möglichkeit?
-
Also sizeof(&TestFunktion) ist ja schon mal kacke. Die Größe der Funktion entspricht in der Regel nicht der Größe eines Zeigers.
-
war ja auch nur psoido! wollte ja nur wissen ob das auch etwas "standardmäßig" geht.