huhu,
ich frage mich, ob es möglich ist eine cpp-Datei in ein richTextBox zu laden und zu kompilieren? Dies ist nur als Kontrolle, dass die Datei auch keine Fehler enthält gedacht.
Sorry, falls ich den falschen Teil des Forums ausgewählt habe. Ich wusste nicht genau woin mit dieser Frage.
Gruß
Florian
Hallo flomad,
native C++ oder C++.NET? Für letzteres sollte es mit ==> CodeDOM gehen.
herbivore
hm.. ich glaube das ist es nicht - oder ich verstehe es falsch.
es geht mir quasi darum, dass ich lala.cpp, die ich laden möchte durch das Kompilieren verifiziere. Also sicher gehe, dass dort kein Fehler drin ist, den ich dann noch weiter rumschleppe.
Da ich noch recht neu in dem Umfeld hier bin, kann es gut sein, dass ich das nur falsch verstehe.
ich suche quasi ein: compile("lala.cpp"; ); 😁 was mir am liebsten nen boolean wert zurück gibt...
Gibt es so etwas überhaupt?
Gruß Florian
Hallo flomad,
herbivore hat dir bereits die Lösung genannt: System.CodeDom.Compiler
Diese Klasse hat eine Methode "FromFile".
Die Methode gibt CompilerResults zurück, welche dann die Fehler und Warnungen enthalten.
Gruss
tscherno
also danke erstmal an euch beide!
Dein Link hat mir sehr geholfen. Da war es etwas besser erklärt. So es ergeben sich daraus dann ein paar Anfänger-Fragen für mich, denke ich.
Ich will ja auf die geschützte Methode fromFile(url) zugreifen. Wie mache ich das?
CodeCompiler test;
CompilerResults cr = test.
hier bietet er mir das FromFile eben nicht an, da es ja eine geschützte Methode ist. Tja, da ich da noch GRÜN hinter den Ohren bin, wie komme ich da ran?oder auch schon so versucht:
ICodeCompiler test;
CompilerParameters pm = new CompilerParameters();
CompilerResults cr = test.CompileAssemblyFromFile(pm, url);
Da bringt er den Fehler:
Verwendung der nicht zugewiesenen lokalen Variablen "test"
Danke im Vorraus schonmal! Gruß Florian
Hallo flomad,
zumindest für die zweite Frage gilt: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) und [Hinweis] Wie poste ich richtig? Punkt 1.1.1.
herbivore
Hallo,
habe mich noch einmal gründlichst mit dem Problem auseinandergesetzt und komme nicht dahinter:
CodeCompiler test;
CompilerResults cr = test.
hier bietet er mir das FromFile nicht an, da es ja eine geschützte Methode ist. Gibt es einen Weg dies zu umgehen?
Mittels Vererbung? Könnte mir da bitte jemand einen Wink geben bzw. eventuell mit einmal zeigen wie man diese Methode verwendet?
Vielen Dank schonmal!
Gruß
Florian
huhu,
habe mich noch einmal gründlichst mit dem Problem auseinandergesetzt und komme nicht dahinter
naja, aber das hat ja nichtmal ne Stunde gedauert. Löse bitte deinen Fehler im vorherigen Post (Herbivore hat dir da nen Link gegeben) und :rtfm: - damit kommst du dann deinem grundlegenden Fehler auf die Spur.
Mittels Vererbung?
ja, wenn du selbst einen Compiler bauen willst. Ansonsten nimm einen der schon vorhandenen.
🙂
Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
eine Stunde??
Einen Tag wohl eher...
..nimm einen der schon vorhandenen
Tja wenn ich wüsste wie, hätte ich hier ja nicht gepostet...
huhu,
Tja, da hab ich wohl nen ganzen Tag übersehen, trotzdem: zu ICodeCompiler gibts bei Google im 4. Treffer (aktuell) in der Voransicht schon ein Stück Code, dass deinen obrigen Fehler erledigt und dir sogar zeigt wies geht.
Trozdem bleibt Herbivores Aussage stehen.
🙂
Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
huhu,
So es ist ja nicht so als würde ich mich damit nicht beschäftigen. Die Links habe ich schon auch gefunden. Meine Schlüsse daraus gezogen und es angewendet.
Folgender Fehler tritt dann auf:
System.CodeDom.Compiler.CodeDomProvider.CreateCompiler()" ist veraltet: "Callers should not use the ICodeCompiler interface and should instead use the methods directly on the CodeDomProvider class. Those inheriting from CodeDomProvider must still implement this interface, and should exclude this warning or also obsolete this method."
So deswegen wollte ich auf die andere Art und Weise das Problem lösen. Hierzu finde ich nichts. Vielleicht könnte mir dabei ja jemand helfen.
Also hier nochmal die Frage:
CodeCompiler test; CompilerResults cr = test.
hier bietet er mir das FromFile nicht an, da es ja eine geschützte Methode ist. Gibt es einen Weg dies zu umgehen?
Gruß Florian
huhu,
naja, ich versuchs mal, muss aber drauf hinweisen, dass ich Herbivores Hinweis
[Hinweis] Wie poste ich richtig? Punkt 1.1.1. nicht untergrabe^^
"Veraltet" bedeutet: wenn das benutzt wird, gibt es keine Garantie dass es in der nächsten Version noch geht. Und das ist definitiv nicht dein anderes Problem "geschützte Methode".
Bitte mal mit den Schlagwörten "abstract, public, private, protected, [Obsolete]" selbst Informationen einholen.
zusätzlich sagt dir der "Fehler" (aus letzterem Beispiel) "Callers should not use the ICodeCompiler interface and should instead use the methods directly on the CodeDomProvider class."
Also um es kurz zu übersetzten: Was du machst geht, aber keine Garantie dass es in der nächsten Version noch geht. Nutz doch bitte statt dessen die selbe Methode direkt von dem Provider, welcher dir grad dieses Interface zur Verfügung stellt".
und jetzt zu deiner (immer wiederkehrenden) Frage:
CodeCompiler test;
CompilerResults cr = test.
CodeCompiler ist abstrakt, eine protected Methode darfst du nie ansprechen, ausser in einer vererbten Klasse. (ok: Vererbung in genau dem Fall heisst, implementiere das ganze wenn Du einen eigenen Compiler schreiben willst).
"nicht zugewiesene Variable" - naja, der Compiler sagt nur: deinen "test" ist nichts zugewiesen - und ich sehen auch kein "=".
Google: Da wird doch genau das gemacht, auch wenn ICodeCompiler "[Obsolete]" ist: es wird ein Microsoft.CSharp - Provider erstellt. Genau da ist dann dein "=".
hmm, sry, hatte nen stressigen Tag. Aber mehr Tips als in diesem Thread solltest Du nicht brauchen damit es läuft.
🙂
Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.