Aufruf von Programm von anderer Main Methode



  • Könnt ihr mir vielleicht erklären, wie ich mein fertiges Programm von einem anderem Projekt aus aufrufe?

    Also mein Projekt startet in der Main Methode eine Methode

    process(...)
    

    .

    int main()
    {
    	// Main method	       
    	process();
    	std::cout << "End of GNG Algorithm" << std::endl;
    	return 0;
    
    }
    

    In dieser process() Methode werden dann ein Objekt erstellt (welches wiederum untergeordnete Objekte enthält) und Berechnungen durchgeführt.

    Das Ziel ist nun dass jemand von aussen mein Programm verwenden kann.
    Ich stelle mir das bis jetzt wie folgt vor:
    Er ruft von seinem Programm aus meine Methode process() auf. Diese Methode process() sollte dann wohl als Rückgabewert dieses Objekt zurückliefern, da sich darin ja alle berechneten Ergebnisse befinden.

    Mein Projekt muss doch bestimmt als lib in das neue Projekt eingebunden werden?



  • Schau dir mal DLL's an.



  • wenns unbedingt ne exe sein muss

    dann schau dir interprocess communication von deinem OS an (zb über shared memory)



  • Als Alternative Möglichkeit, also ohne Einbinden einer Lib:

    Angenommen ich würde meine Header und cpp Dateien dem Anwender zur Verfügung stellen. Dieser kann die Dateien in sein neues Projekt einbinden und somit einfach meinen Code ausführen.

    Der Anwender sollte dabei ja aber keinerlei Informationen haben wie mein Code funktioniert. Bzw. ihn interessiert es ja nicht.

    Wäre es dann sinnvoll eine statische Methode zu definieren, die dann die Eingabe Parameter erhält, dann meinen ganzen Code ausführt und am Ende das Ergebnis zurückgibt? Dieses Ergebnis kann er dann in seinem Code einfach weiter verwenden.

    Somit wäre diese eine Methode die Schnittstelle zu meinem Code.
    Macht soetwas sinn?



  • redbomber schrieb:

    Macht soetwas sinn?

    Das finde ich recht ungewöhnlich. Wieso eigentlich eine statische Methode? Als Schnittstelle eine einzelne Funktion zu haben ist meines Erachtens auch nicht sinnvoll.

    Normalerweise werden fertige Projekte entweder in statische (.lib) oder dynamische Bibliotheken (.dll) ausgelagert. Wenn man als Anwender die passenden Header einbindet und die Bibliotheken linkt, kann man die Funktionalität des Projekts nutzen.



  • Versuche es vielleicht besser mit Windows-Programmierung (Forum WinApi). Damit hast Du weniger Probleme, musst aber lernen, wie man Windows-Anwendungen programmiert.



  • Kommt aber eben drauf an, was redbomber will. Ich bin mir diesbezüglich noch nicht ganz sicher...

    Wenn man nur Code von anderen Projekten/Frameworks wiederverwenden will, sind Bibliotheken/DLLs die beste Möglichkeit. Wenn man zur Laufzeit bestimmte fertige Programme aufrufen möchte, über die man vorher noch nichts weiss, kommt man mit C++ nicht sehr weit und muss sich systemspezifisch beschäftigen. Unter Windows, wie du gesagt hast, beispielsweise mit der WinAPI oder den MFC.


Anmelden zum Antworten