Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
27. Jan
Die

Nachdem ich ja letztens mit DirectX.Capture gespielt habe, war dieses Mal die PortVideo-Bibliothek dran. Auf den Projektseiten ist leider ein wenig dünne Luft, die letzten Änderungen scheinen so um die vier Jahre her zu sein. Aber weil einen das ja bekanntlich nicht abhalten sollte, habe ich mich mal eben ein paar Minuten damit beschäftigt.

PortVideo .NET

So von 23°° bis 7°° Uhr, wie man an den Augenringen sieht. 🙂

Und nun der Teil, der möglicherweise interessanter ist als mein Doppelleben als Waschbär: Der Wrapper ist in C++/CLI geschrieben und damit vermutlich nur unter Windows lauffähig. PortVideo selbst greift auf SDL und auf DSVideoLib zurück, konsequenterweise müssen beide Bibliotheken zur Hand sein. Projektquellcode vorerst auf Anfrage; Ich sehe aber zu, dass ich das Ganze nach SourceForge bekomme – idealerweise als Teil des alten PortVideo-Projektes.

Und nu, liebe Leute, gehe ich aber mal sowas von gekonnt Schafe zählen.

Nachtrag: Das mit SourceForge könnte ein bisschen dauern, daher hier der vorläufige Standzum Download. Das Archiv beinhaltet nebst vorkompilierter Assembly ein in C# geschriebenes Beispielprogramm (siehe Screenshot), sowie die benötigten SDL- und DSVideoLib-DLLs. Download: PortVideo SDL .NET. Lizenz ist der Einfachheit halber GPLv2.

15. Nov
Don

Ich sitze gerade Zucker in den Fencheltee rührend mit kalten Füßen, da ohne Socken, vor meinem Rechner und just kommt mir in Erinnerung: Vor ein paar Tagen bin ich über einen Beitrag gestolpert, der etwas eigenartige C-Konstrukte thematisiert. Wer sich auskennt und ein wenig schmunzeln möchte, sollte sich Evil C unbedingt einmal ansehen.

Da sind ein paar echte Perlen dabei; Der "goes toward" operator (-->) gefällt mir aber nachwievor am Besten.

16. Mrz
Fre

Ich musste gerade ein bisserl herumknobeln, wie man in C++/CLI einen Methodenparameter so markiert, dass er in anderen .NET-Sprachen, in meinem Fall C#, als „out“ oder „ref“ gekenzeichnet wird.

Möchte man nur einen klassischen ‚call by reference‘-Fall erreichen, hier also einen Parameter, der sowohl Eingabe, als auch Ausgabewert sein kann, muss man ihn als „tracking reference“ markieren. Am Beispiel String^:

C++/CLI [Show Plain Code]:
  1. public ref class Foo {
  2. public:
  3.     // c#: void Bar( ref String woo )
  4.     void Bar( String^% woo );
  5. }

Die entsprechende Signatur in C# wäre dann void Bar( ref String woo ).
Möchte man nun einen Parameter explizit als „out“, also ausschließlich zur Ausgabe, markieren, benötigt man zusätzlich das Attribut [Out] – dieses befindet sich allerdings freundlicherweise im Namespace

System::Runtime::InteropServices

vergraben.

Also

C++/CLI [Show Plain Code]:
  1. using namespace System::Runtime::InteropServices;
  2.  
  3. public ref class Foo {
  4. public:
  5.     // c#: void Bar( out String woo )
  6.     void Bar( [Out] String^% woo );
  7. }

Und alles ist, wie es sein soll. Falls man dennoch eine Fehlermeldung wie (C3763)

'retval' and 'out' can only appear on a data-pointer type

erhält, hat man „Out“ ganz simpel – und falsch – in Kleinbuchstaben („out“) geschrieben.