Laden...

geladene *.cpp kompilieren

Erstellt von flomad vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.536 Views
F
flomad Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren
geladene *.cpp kompilieren

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

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo flomad,

native C++ oder C++.NET? Für letzteres sollte es mit ==> CodeDOM gehen.

herbivore

F
flomad Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

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

630 Beiträge seit 2007
vor 15 Jahren

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

To understand recursion you must first understand recursion

http://www.ilja-neumann.com
C# Gruppe bei last.fm

F
flomad Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

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

49.485 Beiträge seit 2005
vor 15 Jahren

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

F
flomad Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

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

X
1.177 Beiträge seit 2006
vor 15 Jahren

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.

F
flomad Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

eine Stunde??

Einen Tag wohl eher...

..nimm einen der schon vorhandenen

Tja wenn ich wüsste wie, hätte ich hier ja nicht gepostet...

X
1.177 Beiträge seit 2006
vor 15 Jahren

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.

F
flomad Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

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

X
1.177 Beiträge seit 2006
vor 15 Jahren

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.