C++ - Winapi programmieren
- C/C++
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Keine Ahnung, weis ja nicht wie dein Zeug jetzt aussieht...
Aber du solltest das cs file und die Exe besser im gleichen Verzeichnis haben"das war meine letzte flamewar PM an dich ." -
hab ich jetzt eh und es klappt,
was tue ich wenn ich nicht nur die system dll brauch sondern auch andere??
oder eigene dll's einbinden will??
Edit: Zeug sieht so aus:
Spoiler anzeigen using System;
using System.IO;
using System.CodeDom.Compiler;
using System.Globalization;
using System.Collections;
class Program
{
static void Main(string[] args)
{
String[] arguments = Environment.GetCommandLineArgs();
//Console.WriteLine(arguments[1]); Für Tests
//Console.ReadLine();
CompileExecutable(arguments[1], arguments[2]);
}
public static bool CompileExecutable(String sourceName, String IntoExe)
{
FileInfo sourceFile = new FileInfo(sourceName);
CodeDomProvider provider = null;
bool compileOk = false;
// Select the code provider based on the input file extension.
if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS")
{
provider = CodeDomProvider.CreateProvider("CSharp");
}
else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
{
provider = CodeDomProvider.CreateProvider("VisualBasic");
}
else
{
Console.WriteLine("Source file must have a .cs or .vb extension");
}
if (provider != null)
{
// Format the executable file name.
// Build the output assembly path using the current directory
// and <source>_cs.exe or <source>_vb.exe.
String exeName = String.Format(@"{0}\{1}",
System.Environment.CurrentDirectory,
/*sourceFile.Name.Replace(".", "_")*/IntoExe);
CompilerParameters cp = new CompilerParameters();
// Generate an executable instead of
// a class library.
cp.GenerateExecutable = true;
// Specify the assembly file name to generate.
cp.OutputAssembly = exeName;
// Save the assembly as a physical file.
cp.GenerateInMemory = false;
// Set whether to treat all warnings as errors.
cp.TreatWarningsAsErrors = false;
// Invoke compilation of the source file.
CompilerResults cr = provider.CompileAssemblyFromFile(cp,
sourceName);
if (cr.Errors.Count > 0)
{
// Display compilation errors.
Console.WriteLine("Errors building {0} \n\ninto \n\n{1}",
sourceName, cr.PathToAssembly);
foreach (CompilerError ce in cr.Errors)
{
Console.WriteLine(" {0}", ce.ToString());
Console.WriteLine();
}
}
else
{
// Display a successful compilation message.
Console.WriteLine("Source {0} \n\nbuilt into \n\n{1} successfully.",
sourceName, cr.PathToAssembly);
}
// Return the results of the compilation.
if (cr.Errors.Count > 0)
{
compileOk = false;
}
else
{
compileOk = true;
}
}
Console.ReadLine();
return compileOk;
}
} -
-
-
Du musst schon wissen, wonach du suchst.. Was würdest du denn gerne erreichen?"das war meine letzte flamewar PM an dich ."
-
-
whiterock schrieb:
wxwidgets benutzen zu können
Bemerkung am Rande: Hättest du dir direkt, nachdem du dich das erste Mal für wxWidgets entschieden hast, die Einsteigertutorials in deren Wiki durchgelesen (Installation der Bibliothek, einrichten der IDE, erste Programme), anstatt weiter nach Alternativen zu fragen und dich mit den Problemen der Alternativen rumzuschlagen, hättest du dieses Ziel schon längst erreichen können. Du solltest dich von den umfangreich scheinenden Beschreibungen, was du tun musst, nicht abschrecken lassen; das ist wirklich nur eine Sache von einem Nachmittag von "Ich hab keine Ahnung" bis "Ich hab meine erste Funktionierende Anwendung geschrieben, die über Hello World hinaus geht.". -
noch was, was is ein Assemblyverweis ? ... jetzt genau ...
Eine Referenz auf eine dll. Dlls sind prinzipiell auch Programme, die man nicht direkt ausführt, sondern die eher als Funktions-Bibliothek fungieren. Andere Programme können einzelne Funktionen von einer dll aufrufen. Das hat den Vorteil, dass man externe Komponenten etwa von andern Leuten in seinem Programm verwenden kann.
Allerdings sind diese .Net Assemblies keine normale dll, sondern eine .Net Dlls(dh nur dlls, die etwa mit c# oder vb oder dergleichen erstellt wurden).
.Net Assemblies haben den Vorteil gegenüber nativen dlls, dass sie von .Net Code direkt geladen werden können und ohne overhead ganz normal die Klassen und Methoden in der Dll verwendet werden können.
Die haben beide die gleiche Endung(.dll), man sieht also nicht direkt, ob ne dll eine .net assembly ist oder native Code, das merkt man, wenns ne Fehlermeldung gibt.
Ausserdem kann man auch auf Com Komponenten verweisen, allerdings hab ich keine Ahnung von COM.
wxwidgets benutzen zu können, eigentlich hauptsächlich das...
*Hust*
.Net und wxwidgets ist zwar was ganz anderes... aber ich denke was du suchst sind dann wohl Windows Forms.
die wichtigste dll wird dann wohl system.windows.forms.dll sein
Wie gesagt, du musst halt C# schon erstmal anständig erlernen, um was damit anzufangen. Geh in Visual C# und erstell ne Windows Forms Applikation und gug dir Tutorials auf msdn an.
Einfach so ohne IDE Hilfe irgendwelche Windows Forms Apps oder was auch immer erstellen zu wollen, wenn man keine Ahnung hat, wie man beginnen soll, ist doch etwas übernommen.
Mit C++ isses genau das gleiche nur noch ein wenig aufwändiger... Das was du vorhast ist eigentlich nix für Anfänger meiner Meinung nach..."das war meine letzte flamewar PM an dich ." -
ok ok:
dann mal ne andere frage:
ich hab mir gerade nen code geschrieben der abtesten soll mithilfe der kommandozeilenparameter welche assembly verweise geschreiben werden sollen
er sagt immer nur index out of array, ich schätze weil er die nächsten hundert program paramter abfragt und dann bei if schaut ib sie nen wert haben und ich glaube DAS muss man anders lösen, ne idee??? -