Hi!
Mich interessieren folgende Dinge:
Kann ich für ein C#-Projekt ein Makefile erstellen, und wenn ja, was kommt da rein?
Kann man mit C# Sounds (wav,mp3,mid,ogg) laden und abspielen ?
thx jonas
Hallo JonasCleve,
zu 1. ja, klar kannst du das, makefiles sind völlig sprachunabhängig.
Simples Mini-makefile:
x.exe: x.cs
csc x.cs
zu 2. siehe Audio- und Videowiedergabe mit MCI
herbivore
Thx
Aber wie schreib ich diese makefiles denn, und wie kompilier ich dann alles?
Hallo JonasCleve,
wenn du sie Syntax von makefile nicht kennst, musst du dir eine Doku dafür suchen. Sowas sollte über google zu finden sein. Ein Einstieg ist in http://de.wikipedia.org/wiki/Makefile zu finden.
Mein makefile compiliert ein Projekt aus einer Quelldatei x.cs in die ausführbare Datei x.exe, wenn x.cs jünger als x.exe ist.
Ein makefile wird durch nmake "gestartet".
herbivore
Make ist in der .NET Welt eigentlich weniger üblich, denn Make ist ein ziemlich schwerfälliger Dinosaurier und unterstützt nur die Auflösung verschiederner Buildtargets. Auch kann das Schreiben von Make-Dateien, kann bei größeren Projekten ziemlich aufwändig werden, denn es müssen verschiedene Plattformen und Make Versionen unterschieden werden. Gerade C++ Entwickler nehmen deshalb oft noch zusätzlich automake und autoconf oder sind gleich auf das modernere SCons umgestiegen.
NAnt oder das ab Version 2.0 eingeführte msbuild sind für C# meist üblicher. (Allein schon wegen der mächtigeren Zusatzfunktionalität)
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
Hallo hab den Code auch mal im Internet gefunden... 🙂
vieleicht gehts auf einfacher aber es funktioniert...
using System;
using System.Runtime.InteropServices;
using System.Resources;
using System.IO;
namespace Win32
{
public class Winmm
{
public const UInt32 SND_ASYNC = 1;
public const UInt32 SND_MEMORY = 4;
// these 2 overloads we dont need ...
// [DllImport("Winmm.dll")]
// public static extern bool PlaySound(IntPtr rsc, IntPtr hMod, UInt32 dwFlags);
// [DllImport("Winmm.dll")]
// public static extern bool PlaySound(string Sound, IntPtr hMod, UInt32 dwFlags);
// this is the overload we want to play embedded resource...
[DllImport("Winmm.dll")]
public static extern bool PlaySound(byte[] data, IntPtr hMod, UInt32 dwFlags);
public Winmm()
{
}
public static void PlayWavResource(string wav)
{
// get the namespace
string strNameSpace=
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString();
// get the resource into a stream
Stream str =
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream( strNameSpace +"."+ wav );
if ( str == null )
return;
// bring stream into a byte array
byte[] bStr = new Byte[str.Length];
str.Read(bStr, 0, (int)str.Length);
// play the resource
PlaySound(bStr, IntPtr.Zero, SND_ASYNC | SND_MEMORY);
}
}
}
Hat jemand eine Idee wie ich MX Dateien aus einer Resource abspiele?