Форум программистов, компьютерный форум CyberForum.ru

Проблема с компиляцией DirectShow - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
19.10.2011, 16:56     Проблема с компиляцией DirectShow #1
Столкнулся со следующей проблемой:
Начал разбирать пример консольной программы Directshow с MSDN, которая воспроизводит видео файл в формате .avi
Действовал следующим образом:
1. В Visual Studio 2010 создал консольный проект с предкомпилированным заголовком;
2. В свойствах проекта (Alt+F7), добавил заголовочный файл "DShow.h" и библиотеку "strmiids.lib" как написано на MSDN;
3. Далее возник следующий вопрос.. в исходном коде программы на MSDN весь код находиться в теле функции void main(void), а когда создается консольный проект в VS2010, то предкомпилированное тело функции имеет следующий вид int _tmain (int argc, char *argv[]). Как мне поступить в этом случае, не могу скомпилировать программу...

Вот исходный код программы, которая должна воспроизводить файл в формате .avi

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <dshow.h>
void main(void)
{
    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();
}
Попробуйте скомпилировать эту программу у себя, может я что-либо не так делаю или нехватает како-то заголовочного файла? Вот ссылка на ветку: http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5383 / 1766 / 323
Регистрация: 10.12.2010
Сообщений: 5,223
Записей в блоге: 3
19.10.2011, 19:40     Проблема с компиляцией DirectShow #2
Цитата Сообщение от al072 Посмотреть сообщение
не могу скомпилировать программу
Какие ошибки? Приведите.
Федор-Липецк
4 / 4 / 0
Регистрация: 15.10.2011
Сообщений: 39
19.10.2011, 19:45     Проблема с компиляцией DirectShow #3
а зачем тебе консольный проект? бери MFC
HighPredator
 Аватар для HighPredator
5383 / 1766 / 323
Регистрация: 10.12.2010
Сообщений: 5,223
Записей в блоге: 3
19.10.2011, 22:34     Проблема с компиляцией DirectShow #4
Цитата Сообщение от Федор-Липецк Посмотреть сообщение
а зачем тебе консольный проект?
У автора пример из msdn под консоль.
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
21.10.2011, 07:26  [ТС]     Проблема с компиляцией DirectShow #5
Цитата Сообщение от Predator_2004 Посмотреть сообщение
У автора пример из msdn под консоль.
Хорошо, коды ошибок выложу..

Добавлено через 21 час 43 минуты
Цитата Сообщение от al072 Посмотреть сообщение
Хорошо, коды ошибок выложу..
При условии, что весь код, я вставляю в тело функции int _tmain(int argc, char *argv[]). Компилятор ругается на строчки (18 и 28) выдает следующие ошибки:

Ошибка 1 error C2561: wmain: функция должна возвращать значение c:\users\alex\documents\visual studio 2010\projects\play a file\play a file\play a file.cpp 19 1 play a file
Ошибка 2 error C2561: wmain: функция должна возвращать значение c:\users\alex\documents\visual studio 2010\projects\play a file\play a file\play a file.cpp 28 1 play a file
HighPredator
 Аватар для HighPredator
5383 / 1766 / 323
Регистрация: 10.12.2010
Сообщений: 5,223
Записей в блоге: 3
21.10.2011, 10:03     Проблема с компиляцией DirectShow #6
У вас главная подпрограмма объявлена в виде функции, возвращающей целочисленное значение, но, скажем здесь:
C++
1
2
3
4
5
if (FAILED(hr))
    {
        printf("ERROR - Could not create the Filter Graph Manager.");
        return;
    }
значение не возвращается. Делайте
C++
1
return 1;
для мест, где обработаны ошибки, и в конце функции
C++
1
return 0;
Добавлено через 1 минуту
Вдогонку:http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 10:13     Проблема с компиляцией DirectShow
Еще ссылки по теме:

C++ Проблемы с компиляцией
Проблемы с компиляцией C++
Проблемы с компиляцией C++
C++ Ошибка с компиляцией
Ошибка с компиляцией C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
21.10.2011, 10:13  [ТС]     Проблема с компиляцией DirectShow #7
Спасибо вечером попробую..по результатам отпишусь..
Yandex
Объявления
21.10.2011, 10:13     Проблема с компиляцией DirectShow
Ответ Создать тему
Опции темы

Текущее время: 18:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru