Als nächstes müsstest du via GetProcAddress an die Adressen der einzelnen Funktionen kommen und den Returnwert in einen Funktionspointer casten, diesen dann callen.
Ich verstehe aber nicht, warum du der Funktion überhaupt Parameter gibst die hinterher wohl eh nicht mehr verwendet werden?
Als nächstes müsstest du via GetProcAddress an die Adressen der einzelnen Funktionen kommen und den Returnwert in einen Funktionspointer casten, diesen dann callen.
Ich verstehe aber nicht, warum du der Funktion überhaupt Parameter gibst die hinterher wohl eh nicht mehr verwendet werden?
Je nachdem wie die Funktion halt aussieht. Danach halt das:
Code:
name Funktion = (name)
GetProcAddress(GetModuleHandle("dll"),
"Funktion");
Für mich ist das ein Funktions pointer ^^ Funktioniert auch so. Frage mich nur was das System_Info und ZeroMemory da drinnen zu suchen hat. Deins geht aber natürlich auch.
z.b. InitLicenKeys(param1, param2, param3 usw....);
ABER das std::function<int(int)> ist nicht richtig. das erste int ist der rückgabe wert und das 2. der wert des 1. parameters glaube ich. Benutze immer nur das was ich gepostet habe so wie du es anscheinend auch gemacht hast. Wenn du dann das std::function<...> änderst musst du natürlich auch reinterpret_cast anpassen. Musst das halt auf die Funktion anpassen. Ich nutze aber lieber meine Version. Wahrscheinlich aber nur weil ich da weiß wo welcher typ für den 1. parameter hin muss, was ich bei std::function nicht sicher weiß.
Je nachdem wie die Funktion halt aussieht. Danach halt das:
Code:
name Funktion = (name)
GetProcAddress(GetModuleHandle("dll"),
"Funktion");
Für mich ist das ein Funktions pointer ^^ Funktioniert auch so. Frage mich nur was das System_Info und ZeroMemory da drinnen zu suchen hat. Deins geht aber natürlich auch.
Oh, das kann natürlich sein - erschließt sich mir aus dem gegebenen Kontext allerdings nicht. der TE postet irgendwie immer nur die Hälfte der Suppe.
Quote:
Originally Posted by omitma
Wahrscheinlich aber nur weil ich da weiß wo welcher typ für den 1. parameter hin muss, was ich bei std::function nicht sicher weiß.
Wie meinst du das? Wenn du anschließend die Funktion aufrufst, bekommst du die Parameter (und deren Datentypen) auch angezeigt, sie haben eben nur keine Bezeichner.
Quote:
Originally Posted by omitma
ABER das std::function<int(int)> ist nicht richtig. das erste int ist der rückgabe wert und das 2. der wert des 1. parameters glaube ich
Sicher das der return typ von InitDecoration ein Int ist ?
Der Rückgabewert einer Funktion kann niemals einen Crash verursachen wenn dieser nicht verwendet wird.
Also ist der Rückgabetyp egal, sofern er diesen nicht verwendet. Das Problem wird vielmehr die Funktionssignatur sein bzw. die verwendete Aufrufkonvention.
Btw: std::function macht hier wenig Sinn, da schleichen sich nur unnötige Fehler ein, da man dann die Aufrufkonvention nicht mehr direkt sehen kann. Da wäre soetwas schon besser: