Userskripte zur laufzeit compilieren und ausführen
-
Hallo,
ich bräuchte für das folgende Problem mal einen kleinen Denkanstoß.Ich muss ein Programm schreiben, welches dem User erlaubt, eigene kleine C Programme zuschreiben (Skripte) und diese dann als aktion ausführen zu lassen.
Gibt es eine Möglichkeit, eine C-Datei zur Laufzeit zu compilieren und auszuführen. Ohne das "Mülldateien" über bleiben? ... Sprich, es soll nur die C Datei über bleiben.
Danke für eure Hilfe
-
anstatt den code zu kompilieren, koenntest du einen interpreter benutzen.
Ch ist der einzige c- und c++-interpreter, der mir auf anhieb einfaellt: http://www.softintegration.com/mfg,
julian
-
Entweder falsches Forumm oder wenn .NET würde sich z.B. die DLR anbieten.
Simon
-
Aus meiner sicht bin ich schon im richtigen Forum, das ich das mit C# erstellen will. Das mit der DLR klingt interessant, nur leider steht mir auf den Rechnern auf denen die Programme laufen sollen, kein FrameWork 3.5 zur Verfügung. Geht das trotzdem und wenn ja kennt da jemand ein Tutorial?
danke für eure Hilfe
-
Ohne .NET Framework kein C#.
-
generell waere eine idee nach "plugin" zu suchen - was du suchst ist doch eine art plug-in system oder ?
hab ich selber auch noch nicht gemacht , kenns nur aus der theorie
die idee ist das du ein interface "veroeffentlichst" - also die spezifikation
in der applikation wird dann das interface anonym geladen und dessen funktionen aufgerufen - die funktionen sind dann aus der dll und die app braucht (kann auch) nichts davon wissen
-
naja mir steht nur das FrameWork bis 2.0 zur verfügung ... mehr will unsere IT-Abteilung nicht installieren ... und somit bin ich da ein wenig gebunden.
die Variante von "Mr Evil" hab ich nicht so 100% verstanden wie willst du aus dem C code des users ein Plugin bzw DLL machen?
-
Net_Hans schrieb:
Gibt es eine Möglichkeit, eine C-Datei zur Laufzeit zu compilieren und auszuführen. Ohne das "Mülldateien" über bleiben? ... Sprich, es soll nur die C Datei über bleiben.
Klar, einfach nach dem kompilieren die Mülldateien löschen.. Oder 'nen Ordner im Temp-Verzeichnis erstellen, die C-Datei reinkopieren und dort kompilieren, die erstellte Exe ausführen und anschließend den ganzen Ordner wieder löschen.
-
ok danke @Badestrand, das war auch meine erst Idee, ich dachte das es eventuell etwas eleganter ablaufen könnte ... aber dann werde ich es doch so machen.
-
Prüfe mal ob es auch erlaubt wäre C# Quellcode als Ersatz für die C Sache zu verwenden. Würde Dir das Leben einfacher machen.
-
Ja die Sprache dahinter den Skripten ist relativ egal, am besten wäre natürlich, wenn der volle funktionsumfang zugänglich wäre.
-
Net_Hans schrieb:
naja mir steht nur das FrameWork bis 2.0 zur verfügung ... mehr will unsere IT-Abteilung nicht installieren ... und somit bin ich da ein wenig gebunden.
btw - ist da nichts zu machen ? mir wuerde als entwickler im traum nicht einfallen mich von nem it'ler derartig kastrieren zu lassen - so kann man nicht arbeiten
hast du kein entwickler pc ? bei uns koennen nur die "nicht-entwickler" nichts installieren auf deren pcwie soll man denn so richtig arbeiten wenn es "die it" nicht erlaubt - tze
-
Mal ein paar Stichworte und Links:
Google: CSharpCodeProvider
Google: C# code zur laufzeit kompilierenhttp://www.codeproject.com/KB/codegen/Run-Time_Code_Generation1.aspx
Der Hintergedanke dabei: Du hast ohnehin das .Net Framework X.Y installiert was alles für die Erstellung mit bringt und einen definierten Zustand hat.
Der C Compiler (C++) benötigt ja auf dem Zielsystem eine Einrichtung, Header etc. (Eventuelle Konflikte wenn bereits ein Compiler vorhanden ist.)
Ein Blick könnte sich lohnen.
-
Mr Evil schrieb:
btw - ist da nichts zu machen ? mir wuerde als entwickler im traum nicht einfallen mich von nem it'ler derartig kastrieren zu lassen - so kann man nicht arbeiten
hast du kein entwickler pc ? bei uns koennen nur die "nicht-entwickler" nichts installieren auf deren pcwie soll man denn so richtig arbeiten wenn es "die it" nicht erlaubt - tze
Ich bin ebenfalls an das .Net 2.0 Framework gebunden. Man kann auch damit vernünftig arbeiten. Es geht ja nicht nur um den Entwicklungsrechner - es geht ja auch um die Systeme, die später die geschriebene Software verwenden. Das Ausliefern von .Net 2.0 (~30MB) ist im einfacher als die Auslieferung von .Net 3.5 (~350MB). Der Job als Entwickler hängt primär davon ab, wie der Absatz der geschriebenen Software ist. Deine Aussage finde ich persönlich daher ein wenig an der Realität vorbei.
-
**Danke Knuddlbaer,
dieser Ansatz mit dem CodeProvider klingt richtig interessant. Diesen Ansatz werde ich mal versuchen Danke ...**
@Mr Evil
Mr Evil schrieb:
btw - ist da nichts zu machen ? mir wuerde als entwickler im traum nicht einfallen mich von nem it'ler derartig kastrieren zu lassen - so kann man nicht arbeiten
hast du kein entwickler pc ? bei uns koennen nur die "nicht-entwickler" nichts installieren auf deren pcwie soll man denn so richtig arbeiten wenn es "die it" nicht erlaubt - tze
Also ich muss mich der Meinung von Knuddlbaer anschließen. Es gibt nun mal Unternehmen, wo eine Große IT-Abteilung dahintersteht und die den Ton in sachen Software angibt ... tja und wenn die entscheidet FrameWork 3.5 is nicht ... dann ist das nicht. Da kann ich mich auf den Kopf stellen
-
ich arbeite auch in einer groesseren firma (>400 leute)
wir entwickeln auch applikationen mit c#
und man geht davon aus das - wenn die benutzer die applikation haben wollen - sie auch das neueste framework verwenden - ist dann mit windows 7 eh wieder n standard
(seit wann liefert man das framework mit aus ? third party software hat auf dem eigenen gm nix zu suchen sofern es nicht eingekauft wurde - bei directx hatts man nur aus gefaelligkeit gemacht , aber eigentlich auch nicht richtig)ich seh das wie mit direct x - nur weil mache dx10 nicht haben wegen was auch immer - ist das kein grund das game nicht zu entwickeln oder auf ein veraltetes system zu bauen
und was eine software braucht und unterstuetzt - seit wann wird das von der it bestimmt ? ist ja laecherlich
das macht der solution architekt, und auch der techinal project leader hat da mit zu reden (wozu hat man sonst das software architect office) - aber doch nicht die it also bittedie it supported die software und maintaint die hardware - mehr haben die nicht zu tun - ist ja auch genug
//dazuedit
ich sollte noch erwaehnen das es nicht so ist das die it keine rechte haette - die it verifiziert auch sachen um den jeweiligen leuten mitteilen zu koennen ob man etwas produktiv einsetzen kann oder nicht
bei uns wird seit einer weite das vista sp2 verifiziert - aber die endgueltige entscheideung trifft keineswegs die it - die liefern nur die test ergebnisse
-
Willkommen in der Welt der Realität
Der Kunde kann eine IT haben die bestimmt wo es lang geht. In der Industrie liefest man zudem eine komplette Lösung. Der Kunde Beauftrag eine Lösung und will auch alles dafür erhalten damit es läuft.
In der Industrie findest Du auch noch Windows 98 Rechner auf denen die "Lösung" laufen muss - da ist kein Geld für immer das neueste.
-
unsere kunden sind die endkunden wie du und ich privat
und das weltweit - aber du sagst es selber
"der kunde kann eine it haben"
das bedeutet aber nicht das die eigene it irgendwas zu sagen haette #gg
und genau um darum gings ja - die eigene it
wenn ein kunde da ist der maximal .net 2.0 moechte (oder kann) ist das natuerlich was anderes
-
Ok, da mag der Unterschied sein. Privatkunde und Industrie =o)
-
und das wie gesagt aendert nichts daran das die eigene it einen nichts zu verbieten hat
was mich auf meine urspruengliche aussage zurueck bringt "mir wuerde als entwickler im traum nicht einfallen mich von nem it'ler derartig kastrieren zu lassen"
so wie sich sein post liegt hatts seine it pauschal "verboten" und da wirds dann laecherlich
(es steht nirgends das er wegen ein kunden nicht kann sondern nur das es die it nicht erlaubt [darueber kann ich immernoch lachen "die it nicht erlaubt" #ggg)