[Gelöst]Wie bringt man das AMCAP sample aus der SDK zum laufen?
-
Ausserdem ist es wirklich nur eine kurzfristige Notlösung.
Wesshalb bist Du Dir da so sicher?
Simnon
-
Ich geh davon aus das ein Beispielprogramm ohne Änderungen funzen sollte. Ich glaube eher es liegt an den Verweisen in den Eigenschaften von VC++ 2008, was aber bei mir nicht funktioniert (siehe oben).
-
Kann denn jemand probieren das Beispielprogramm AmCap aus "C:\Programme\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\Capture" mit visual c++ 2008 zu kompilieren. Ob es bei euch klappt und/oder was ihr macht damit es klappt.
Das wäre sehr hilfreich!
-
Bei mir gehts:
Ich musste 2 Punkte (1 und 2) berücksichtigen:
1. Das ganze Verzeichnis DirectShow kopieren, denn da bestehen noch Abhängigkeiten zu anderen Projekten.
2. Zuerst das Projekt BaseClasses builden und zwar als Debug bzw. Release Build (nicht z.B. Debug_MBCS)
3. Builden des AMCap Samples.Übrigens wird das .NET Framework nicht benötigt.
Das bedeutet es ist eine 100% native Applikation.Beide Projekte wurden zuerst konvertiert zum VS2008 Format.
Simon
-
Hallo Simon, danke für deine Antwort!
ich habe versucht die BaseClasses zu kompilieren aber dann bekomme ich:
folgendes:c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(3) : error C2871: 'System': Es ist kein Namespace mit diesem Namen vorhanden c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(4) : error C2653: 'System': Keine Klasse oder Namespace c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(4) : error C2871: 'ComponentModel': Es ist kein Namespace mit diesem Namen vorhanden c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(5) : error C2653: 'System': Keine Klasse oder Namespace c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(5) : error C2871: 'Collections': Es ist kein Namespace mit diesem Namen vorhanden c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(6) : error C2653: 'System': Keine Klasse oder Namespace c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(6) : error C2871: 'Forms': Es ist kein Namespace mit diesem Namen vorhanden c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(7) : error C2653: 'System': Keine Klasse oder Namespace c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(7) : error C2871: 'Data': Es ist kein Namespace mit diesem Namen vorhanden c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(8) : error C2653: 'System': Keine Klasse oder Namespace c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(8) : error C2871: 'Drawing': Es ist kein Namespace mit diesem Namen vorhanden c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(22) : error C2059: Syntaxfehler: 'public' c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(22) : error C2059: Syntaxfehler: 'public' c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(22) : error C2653: 'System': Keine Klasse oder Namespace c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(23) : error C2143: Syntaxfehler: Es fehlt ';' vor '{' c:\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h(23) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? [...]
Was soll ich machen damit er den Namenspace findet?
-
Zeig mal bitte die ersten 20 Zeilen der :\dokumente und einstellungen\florian\desktop\directshow\baseclasses\streams.h
-
Hi,
hier ist ein Ausdruck:#pragma once using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; namespace AmCap { /// <summary> /// Zusammenfassung für streams /// /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen /// arbeiten, die diesem Formular zugewiesen sind. /// </summary> public ref class streams : public System::Windows::Forms::Form { public: streams(void)
-
Flobsy schrieb:
Hi,
hier ist ein Ausdruck:
[code]#pragma onceusing namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;Übrigens wird das .NET Framework nicht benötigt.
Das bedeutet es ist eine 100% native Applikation.Verwendet ihr denn wirklich das gleiche Projekt ?! Für die using namespace Direktiven müssen die Verweise auf die Assemblies gemacht werden. Wenn es ein Native Projekt ist, dann haben die using Direktiven da nichts verloren. (Die Klasse fängt aber mit ref an, also .Net Code)
Ich hab das Beispiel nicht und mag es auch nicht zum download suchen.
Klicke mit der rechten Mausetaste auf Dein Projekt -> dann auf Eigenschaften.
http://www.rothmichael.de/cpp/AMCAP/Bild1.pngIn dem darauf folgenden Dialog auf Allgemeine Eigenschaften -> Framework und Verweise
http://www.rothmichael.de/cpp/AMCAP/Bild2.pngMittels Neuen Verweis hinzufügen kannst Du dann die nötigen Verweise erstellen.
http://www.rothmichael.de/cpp/AMCAP/Bild3.pngDas ausgrauen hängt vom Zielframework ab für das dieses Projekt erstellt ist. (Du hattest ja was geschrieben von ausgegraut.)
Mach mal ggf. ein Screenshot von http://www.rothmichael.de/cpp/AMCAP/Bild3.png diesem Fenster so das man mal schauen kann was da bei Dir los ist.
Ggf. das Framework mal neu installieren bzw. die Visual Studio Installation reparieren.Ahja, und schau mal bitte für welches Zielframework das ganze ist. (2.0 3.0 3.5 )
-
Danke für die Hife!
Wenn ich genau nach deiner Methode mache: http://www.alice-dsl.net/mister-florian/vcpp2008/1.png dann bekomme ich: http://www.alice-dsl.net/mister-florian/vcpp2008/2.png.
Gehe ich aber auf "verweise" oder klicke ich mit der Rechten Maustaste nicht auf die Projektmappe sondern auf das Projekt: http://www.alice-dsl.net/mister-florian/vcpp2008/n1.png dann bekomme ich das im "Prinzip" richtige Fenster: http://www.alice-dsl.net/mister-florian/vcpp2008/n2.png Nur dass nichts drin ist. Daher komme ich auch nicht zu diesem Fenster: http://www.rothmichael.de/cpp/AMCAP/Bild3.pngKann es sein das Visual c++ 2008 die Konvertierung falsch macht. Beim probieren ist mir aufgefallen, dass wenn ich ein neues Projekt als CLR->Windows Form-Anwendung öffnen, dann habe ich das Bild wie in http://www.rothmichael.de/cpp/AMCAP/Bild2.png.
Wenn ich aber ein Projekt als win32->win32-Projekt öffne, dann bekomme ich das Fenster mit der ausgegrauten Net. Framework Fläche.
Im nachhinein ist es auch logisch, da die Win32-Anwendungen nativ sind und keine Framework benötigen.Wäre da vielleicht die Möglichkeit ein existierendes Projekt in einer Windows Form-Anwendung zu konvertieren.
Da ich dachte das Problem könne an Visual C++ 2008 Express liegen, habe ich Visual C++ 2008 installiert. Das hat aber nichts geändert.
[edit] Wegen Vollständigkeit kopiere ich mal was VC++ 2008 schreibt vor der Konvertierung:
Wenn die Projektmappe oder das Projekt der Quellcodeverwaltung unterliegt, wird sie bzw. es während der Konvertierung automatisch ausgecheckt. Stellen Sie sicher, dass das richtige Quellcodeverwaltungs-Plug-In aktiv ist und keine Dateien exklusiv von anderen Benutzern ausgecheckt sind.
Der Aktualisierungs-Assistent aktualisiert Projekte für .NET Compact Framework 1.0 auf .NET Compact Framework 2.0.
.NET Compact Framework 2.0-Anwendungen werden nicht geändert.
SQL Server Mobile 3.0- und SQL Server Compact Edition 3.1-Verweise werden zu SQL Server Compact 3.5-Verweisen aktualisiert.
Außerdem werden verwaltete Smartphone 2003-Projekte für Windows Mobile 5.0 aktualisiert.Konvertierungstyp: Direkt ohne Sicherung
-
Daher komme ich auch nicht zu diesem Fenster: http://www.rothmichael.de/cpp/AMCAP/Bild3.png
Du hast genauso wie ich den Knopf Verweise hinzufügen. Schau mal, den hab ich hier sogar hervorgeoben:
http://www.rothmichael.de/cpp/AMCAP/Bild2.pngGeht der bei Dir nicht ?
-
Du hast genauso wie ich den Knopf Verweise hinzufügen. Schau mal, den hab ich hier sogar hervorgeoben:
http://www.rothmichael.de/cpp/AMCAP/Bild2.pngGeht der bei Dir nicht ?
Leider kann ich es nicht hervorheben, es ist unauswählbar
Daher denke ich Visual C++ konvertiert es als win32-Projekt. Wenn Du ein neues win32->Win32-Projekt öffnest, müsstest du die Framework auch nicht auswählen können oder?
Ich habe also ein neues Projekt als Windows CLR->Windows Form-Anwendung geöffnet (einzige Möglichkeit das folgende Fenster zu bekommen:http://www.alice-dsl.net/mister-florian/vcpp2008/mitwinform.png). Anschließend habe ich alle Header und Quelldatein aus AmCap hinzugefügt, um so die Konvertierung von Visual c++ des - nach ihm veralteten - Projekt AmCap zu umgehen. Ich bekomme folgenden Bericht nach dem Kompilieren:
..\AMCap\status.cpp(9) : fatal error C1083: Datei (vorkompilierte Headerdatei) kann nicht geöffnet werden: "Debug\amcapkonvertierungsversuch.pch": No such file or directory
SampleCGB.cpp
..\AMCap\SampleCGB.cpp(9) : fatal error C1083: Datei (vorkompilierte Headerdatei) kann nicht geöffnet werden: "Debug\amcapkonvertierungsversuch.pch": No such file or directory
crossbar.cpp
..\AMCap\crossbar.cpp(628) : fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "stdafx.h"" einzufügen?
AssemblyInfo.cpp
.\AssemblyInfo.cpp(1) : fatal error C1083: Datei (vorkompilierte Headerdatei) kann nicht geöffnet werden: "Debug\amcapkonvertierungsversuch.pch": No such file or directory
amcapkonvertierungsversuch.cpp
.\amcapkonvertierungsversuch.cpp(3) : fatal error C1083: Datei (vorkompilierte Headerdatei) kann nicht geöffnet werden: "Debug\amcapkonvertierungsversuch.pch": No such file or directory
amcap.cpp
..\AMCap\amcap.cpp(10) : fatal error C1083: Datei (vorkompilierte Headerdatei) kann nicht geöffnet werden: "Debug\amcapkonvertierungsversuch.pch": No such file or directory
Code wird generiert...
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Florian\Desktop\test\DirectShow\Capture\amcapkonvertierungsversuch\Debug\BuildLog.htm" gespeichert.
amcapkonvertierungsversuch - 6 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Vielleicht ist es einfache zu lösen?!
-
Kannst Du mal den Downloadlink posten wo Du das Projekt herhast ?
-
Das Projekt ist im Microsoft SDK Ordner: C:\Programme\Microsoft SDKs\Windows\v6.1\Samples\Multimedia
-
Sei mir nicht böse, ich sitze hier am Sonntag in der Firma weil ein Projekt fertig werden muss. Ich hab jetzt kein Bock die MS Seite abzugrasen.
Bitte ein Deeplink auf das was man Downloaden muss.
-
Sorry ich dachte die Datei wäre schon auf deinem Computer da sie in der SDK als Beispiel gegeben ist.
Hier ist ein Link: http://www.alice-dsl.net/mister-florian/vcpp2008/DirectShow.zip
[edite]
die paar Infos vom WWW fasse ich hier noch mal zusammengefasst:
Man muss bei der Baseclasses und bei Amcap im Projekt-Eigenschaftsfenster bei Konfigurationseigenschaften->allgemein->Projektstandarts den Seichensatz auf Unicode stellen (falls es nicht schon so ist)
Dann jeweils bei Konfigurationseigenschaften->C/C++->Sprache "wchar_t als integrierten Typ behandeln" auf "ja" stellen.Viel hat es aber jetzt bei mir nicht geholfen.
-
Na es gibt viele SDKs
Da Simon es kompilieren kann, kann er da bestimmt weiterhelfen. Im Moment fehlt die Zeit da zu suchen. Aber auf der schnellsuche bin ich darüber gestolpert:
http://directshownet.sourceforge.net/Vllt. löst Dir das ja ein paar Probleme , ka was Du genau vor hast.
Die Beispiele die Du gelinkt hast sind Win32 Projekte, die .Net Quellcode enthalten. (Die Baseklass soll als statische Lib erzeugt werden). Das schaut nach murks aus. Vllt. kann Simon kurz posten, was er da gezogen hat. Kurzum: Mal die Beispiele aktualisieren. Auf die schnelle weiß ich kein Rat (zumal ich mit DirectX und Show etc. nix am Hut hab.)
-
Habs jetzt gerade nochmals mit VS2005 ausprobiert.
Geht einwandfrei.Ich musste an den Projekt- Settings nicht ändern.
Einzig musste ich bei den VS Einstellungen den Inlude Pfad zum SDK Inklude an erste Stelle rücken.
Wie schon erwähnt, .NET wird keinenfalls benötigt.
(Weder bei BaseClasses, noch bei AMCap.) Es sind keine Ref. auf .NET Assemblies vorhanden und der Kompilerswitch steht sinngemäss auf keine .NET Unterstützung.DirectX muss nicht installiert sein, weder Runtime noch SDK.
Alles was ich gemacht habe ist den Ordner DirectShow aus der SDK Samples Sammlung zu kopieren und 1.) die BaseClasses Lib gebuildet (Achtung: Debug wählen, nicht Debug_MCS) und 2.) das AMCap Projekt gebuildet (strmbasd.lib wird statisch dazugelinkt, wie von Knuddelbär richtig bemerkt).
Simon
Edit:
Ich habe mir noch dein DirectShow.zip heruntergeladen und angeguckt.
Stimmt, dort wird .NET verwendet... habe aber aufgegeben, als nach Beheben der .NET Abhängigkeiten noch mehr (nicht .NET relevante) Kompiler Errors kamen.BTW: Assemblies Referenzieren kann man nur, wenn man den .NET Support (/clr o.ä.) bei den Projekt Settings aktiviert.
-
So wie es für mich aussieht ist schlicht und einfach deine streams.h falsch.
Auch steht ein deutscher Kommentar drinnnen, scheint mir verdächtig.Wie kommt also die falsche streams.h dort hinein?
- Ev. gibts ein deutsches SDK (weiss ich nicht, ich habs mit dem englischen probiert), bei dem die streams.h falsch ist.
- Sonst ein Fehler, verursacht durch den Anwender...Was würde ich tun?
- die streams.h austauschen gegen die korrekte version.
(Notfalls die orginal Version aus dem ISO File herauskopieren oder SDK neu installieren.)Simon
-
Hallo Knuddlbaer, Hallo Simon,
Danke für eure hilfe!
Ich in gerade dabei alle SDKs zu löschen und neu zu installieren.
DirectX muss nicht installiert sein, weder Runtime noch SDK.
Du hast SDK nicht installiert? aber Du machst doch ein Pfad zu SDK Include!?
BTW: Assemblies Referenzieren kann man nur, wenn man den .NET Support (/clr o.ä.) bei den Projekt Settings aktiviert.
Wo macht man das genau?
(strmbasd.lib wird statisch dazugelinkt, wie von Knuddelbär richtig bemerkt).
Und wie macht man das?
Welche SDK Version hast Du Simon? Könntest Du dein Directshow-Ordner online stellen?
-
Wo macht man das genau?
(.NET Support einstellen.)
Das macht man bei den Project Settings:
Configuration Properties > General > (dann rechts): Common Language Runtime support.
(Das ist gerade unter der Einstellung zum Character Set (Unicode oder nicht... das hast Du glaube ich auch schon mal gefunden...).Und wie macht man das?
(Lib statisch dazu linken.)
Bei den Project Settings:
Configuration Properties > Linker > Input > (rechte Seite) Additional Dependecies.Aber Achtung: Das sollte schon eingestellt sein!
Du hast SDK nicht installiert? aber Du machst doch ein Pfad zu SDK Include!?
Die Windows SDK (siehe weiter unten) muss natürlich installiert sein.
Jedoch nicht die DirectX SDK.Welche SDK Version hast Du Simon? Könntest Du dein Directshow-Ordner online stellen?
Ich habe Windows SDK Version 6.1. Das ist diejenige, die Du referenziert hast in einem vorherigen Post: http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx
Zum online stellen: Es ist wirklich exakt die aus der SDK. Werde mir also vorerst mal noch nicht die Mühe machen.
Simon