Externe Funktion aus Bibliothek heraus aufrufen
-
Moin,
ich häng grade ein wenig und komm mit meinem Programm nicht weiter. Vielleicht kann mir da einer von euch ja helfen.Ich entwickel zur Zeit eine statische Bibliothek (*.lib), diese soll u.a die main Funktion enthalten. In der main Funktion möchte ich eine weitere Funktion aufrufen. Diese soll allerdings nicht mit in der Bibliothek sein, sondern in dem Projek, welches die Bibliothek verwendet. Soweit klar?
Meine Bibliothek:
void main(void) { // .... myMain(); // .... }
Ein Projekt, wo meine Bibliothek eingebunden wird:
// .... void myMain(void) { // Individueller Code } // ....
Die Funktion myMain() darf nicht mit in der Bibliothek liegen, da sie von verschiedenen Personen je nach ihren Bedürfnissen angepasst werden können soll.
Hätte da vielleicht jemand eine Idee, wie ich das realisieren kann?
-
Also der Sinn einer lib ist doch eigentlich eher, dass die allgemein verwendbar ist und einen bestimmten Satz an Funktionen liefert, der unabhängig benutzt werden kann. Insofern klingt dein Wunsch, eine Funktion des einbindenden Programms aufzurufen, ein wenig seltsam in meinen Ohren. Zumal ich keine Ahnung habe, ob und wie man sowas realisieren könnte. Wie willst du einen Funktionsnamen aufrufen, dessen Deklaration und Implementation beim Kompilieren und Linken fehlt? Vielleicht könnte man da irgendwas mit einer Dummy-Funktion und Funktionspointern machen, aber... nee...
TheDeath schrieb:
Die Funktion myMain() darf nicht mit in der Bibliothek liegen, da sie von verschiedenen Personen je nach ihren Bedürfnissen angepasst werden können soll.
Wäre es da nicht ratsamer, eine Funktion in deiner lib zu schreiben, die von der einbindenden Stelle durch Parameter auf die gewünschte Funktionsweise gebracht wird?
-
Grundsätzlich sollte das problemlos funktionieren. Hast Du es denn mal ausprobiert?
Achja, wie:
LIB mit main-Funktion erstellen, in der Du andere Funktion aufrufst. Objekt mit anderer Funktion mit LIB zu EXE binden, fertig.Die andere Funktion muss natürlich eine festgelegte Signatur und einen festgelegten Namen haben.