Prima volta in Visual CPP

di il
18 risposte

Prima volta in Visual CPP

È la prima volta che uso Visual C++
ho copiato su Visual C++
il codice in fondo al sito



e risulta così in Visual C++

#include <dshow.h>
#pragma once



namespace Prova2 {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Riepilogo per Form1
	///
	/// AVVISO: se si modifica il nome della classe, sarà necessario modificare la
	///          proprietà 'Nome file di risorse' relativa allo strumento Compilatore di risorse gestite
	///          associato a tutti i file RESX da cui dipende la classe. In caso contrario,
	///          le finestre di progettazione non saranno in grado di interagire correttamente con le
	///          risorse localizzate associate al form.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: aggiungere qui il codice del costruttore.
			//
		}

	protected:
		/// <summary>
		/// Liberare le risorse in uso.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 

	private:
		/// <summary>
		/// Variabile di progettazione necessaria.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Metodo necessario per il supporto della finestra di progettazione. Non modificare
		/// il contenuto del metodo con l'editor di codice.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(57, 53);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(93, 29);
			this->button1->TabIndex = 0;
			this->button1->Text = L"button1";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(672, 264);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->ResumeLayout(false);

		}
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
			 {

				 IGraphBuilder *pGraph = NULL;
    IMediaControl *pControl = NULL;
    IMediaEvent   *pEvent = NULL;

    // Initialize the COM library.
    HRESULT hr = CoInitialize(NULL);
    if (FAILED(hr))
    {
        printf("ERROR - Could not initialize COM library");
        return;
    }

    // Create the filter graph manager and query for interfaces.
    hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
                        IID_IGraphBuilder, (void **)&pGraph);
    if (FAILED(hr))
    {
        printf("ERROR - Could not create the Filter Graph Manager.");
        return;
    }

    hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
    hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

    // Build the graph. IMPORTANT: Change this string to a file on your system.
    hr = pGraph->RenderFile(L"C:\\Example.avi", NULL);
    if (SUCCEEDED(hr))
    {
        // Run the graph.
        hr = pControl->Run();
        if (SUCCEEDED(hr))
        {
            // Wait for completion.
            long evCode;
            pEvent->WaitForCompletion(INFINITE, &evCode);

            // Note: Do not use INFINITE in a real application, because it
            // can block indefinitely.
        }
    }

    pControl->Release();
    pEvent->Release();
    pGraph->Release();
    CoUninitialize();



			 }
	};
}



dove ho inserito

DShow.h

da Visual C++

cliccando su Progetto-Aggiungi elemento esistente-

e cliccando su DShow.h

non so se questa procedura che ho seguito è

giusta

fatto sta che mi da 15 errori

non vede
IMediaEvent
Errore 2 error LNK2020: token non risolto (0A000014) IID_IMediaEvent Prova-2.obj Prova-2
Errore 3 error LNK2020: token non risolto (0A000015) IID_IMediaControl Prova-2.obj Prova-2
Errore 4 error LNK2020: token non risolto (0A000017) CLSID_FilterGraph Prova-2.obj Prova-2
Errore 5 error LNK2020: token non risolto (0A000018) IID_IGraphBuilder Prova-2.obj Prova-2

ecc..

mi sapete dare una mano?

18 Risposte

  • Re: Prima volta in Visual CPP

    Aggiungi:

    #pragma comment(lib,"Strmiids.lib")

    subito dopo #pragma once, come indicato nei commenti
  • Re: Prima volta in Visual CPP

    Grazie ma ho provato ed è tutto come prima
    io ho visual studio 2008

    comunque grazie mille
  • Re: Prima volta in Visual CPP

    Io ho usato il VC++ 2012 e aggiungendo la nuova pagma non ho problemi.
    Comunque il problema di fondo è che il linker non trova la libreria. Prova a cercarla con ricerca files e se c'è aggiungila al progetto.
  • Re: Prima volta in Visual CPP

    Sul mio pc non c'è Strmiids.lib , non è che me la potresti mandare così provo?

    di nuovo grazie tante
  • Re: Prima volta in Visual CPP

    L'SDK delle DirectX é installato?
  • Re: Prima volta in Visual CPP

    Ho scaricato DXSDK_Jun10.exe e intallato

    però non trovo ne

    DShow.h

    che avevo già trovato in internet

    ne

    Strmiids.lib

    non riesco a capire

    se compro Visual Studio 2012 trovo li dentro trovo tutto?

    e poi volevo sapere tu riesci a vedere (cioè fa il Play) proprio del file inserito nel programma

    intendo quello che hai scelto tu?
  • Re: Prima volta in Visual CPP

    Provato con Vs2010 nessun problema. Ho piazzato un file avi su C, rinominato in example.avi vedo il filmato.
  • Re: Prima volta in Visual CPP

    Volevo solo chiederti questo

    Strmiids.lib è in Visual Studio

    comunque Grazie di tutto

    Enrico
  • Re: Prima volta in Visual CPP

    Scusa tanto la mia era una domanda
    strmiids.lib è in una directory di Visual Studio?

    Grazie
  • Re: Prima volta in Visual CPP

    Fa parte del sdk delle directx, quindi lo dovresti trovare la. Una volta installate le sdk devi anche verificare se le librerie sono inserite nelle proprieta del linker.
    Intanto se utilizzi win7 sarebbe meglio utilizzare _uuidof()

    Fermi tutti: Ma che progetto hai creato? Quello é un progetto managed c++ non uno nativo. Per forza che hai problemi a trovare le librerie. Non puoi creare un progetto console win32?
  • Re: Prima volta in Visual CPP

    Io la libreria l'ho cercata con cerca sul pc e non la trova
    vorrei sapere se mi puoi dire quale directx hai tu per farlo
    anche io

    poi ho provato con console win32 ma non si crea la form e non trovo
    il modo di aggiungerla

    Grazie
  • Re: Prima volta in Visual CPP

    Invece ho trovato Strmiids.lib

    in tre directory

    Programmi\Microsoft SDK\v5.0\Lib\IA64

    e

    Programmi\Microsoft SDK\v6.0A\Lib\x64

    e

    Programmi\Microsoft SDK\v6.0A\Lib

    ho provato a copiarla nel progetto

    e ancora non funziona

    sono proprio alle prime armi

    dove non funziona niente

    strano che il pc non trovi niente
  • Re: Prima volta in Visual CPP

    A che ti serve il form se il progetto copiato é console. Devi avere chiaro un po di cose. Managed C++ non centra niente col C++ é un estensione Microsoft per far funzionare tra di loro progetti native e .Net. Quindi decidi cosa vuoi imparare. In consile come dice la parola stessa non ti viene creato una finestra ma solo quella pseudo-dos.
  • Re: Prima volta in Visual CPP

    Il form mi serve per mettere un bottone
    mettere li il codice
    e decidere quando cliccarci sopra
    Ma tu come hai fatto?
    Mi pare che mi serva un libro per imparare il VC++
    Di quello che dici ne terrò conto quando avrò letto qualcosa
    per ora non ho capito niente.
Devi accedere o registrarti per scrivere nel forum
18 risposte