2016-05-02 13 views
0

Ich versuche, ein Spiel ähnlich wie code hunt zu schreiben (https://www.codehunt.com/about.aspx) So wie dies funktioniert, ist der Spieler kann eine CPP-Datei ändern, die kompiliert werden und und lief innerhalb des Codes, aber ich habe Probleme, wie man es kompiliert. Ich bin das neueste g ++ Compiler, und das ist, wie ich versuche, dies zu achive:Compiling innerhalb des Codes mit g ++ in Code :: Blöcke

void Builder::build(const char* file){ 
std::string s = "g++ "; 
s += file; 
s += " -o test.o"; 
system(s.c_str()); 
} 

Wo wir den Namen des CPP-Datei zu erhalten, und dieser Code Stück soll test.o bauen Dies ist nur ein Test jetzt, könnte es komplizierter, ich wollte nur testen, ob der Compiler im Code arbeiten, aber ich bekomme diese Fehlermeldung, wenn ich versuche, dies auszuführen:

c:/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../libmingw32.a(main.o):(.text.startup+0xa7):undefined reference to '[email protected]' 
collect2.exe: error: ld returned 1 exit status 

PATH für mingw gesetzt richtig, ich überprüfte. Ich verwende Windows 8.1, g ++ 4.9.3 und Code :: Blocks.

+0

Sind Sie sicher, dass Sie die Ausgabedatei mit einem '.o' Suffix benennen möchten, wie eine * Objekt * Datei und keine ausführbare Datei? –

+0

Außerdem ist das Ausführen von Code, der vom Benutzer gegeben wird, ein großes Sicherheitsloch, groß genug um eine Saturn V Rakete zu fliegen. –

Antwort

1

In Windows-Ausführung beginnt nicht normalerweise bei main Funktionen, es beginnt bei der WinMain-Funktion, die einige Windows-spezifische Argumente benötigt. Sie sollten z.B. this WinMain reference für weitere Informationen.

, dass einige Programme nach wie vor an einer main Funktion zu starten scheint, ist, weil es eine Objektdatei mit dem Programm verknüpft ist, der die WinMain Funktion enthält, die Ihre main Funktion aufruft.

0

OK Ich bin ein Idiot, also war das Problem, dass ich versuchte, eine Datei ohne eine Hauptfunktion zu bauen. Das war zuerst eine Designentscheidung, aber ... nun ja. Das tut mir leid. Danke Joachim Pileborg, dass er mich dazu geführt hat.

Verwandte Themen