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

Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
10.08.2012, 16:29     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #1
Доброго времени суток занимаюсь созданием аппаратного генератора случайных чисел на основе звуковой карты, и вот застала в расплох некая ошибка fatal
error C1083: Не удается открыть файл предкомпилированный заголовок: Debug\Mmmsystem.pch: No such file or directory
Как разрешить проблему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2012, 16:29     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел!
Посмотрите здесь:

C++ Генератор случайных чисел
C++ генератор случайных чисел
Генератор случайных чисел C++
C++ Аппаратный генератор случайных чисел! SOS
Генератор случайных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
10.08.2012, 16:32     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #2
Вы используете прекомпилированные заголовки? Если да, то отлючите.
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
10.08.2012, 16:43  [ТС]     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #3
Цитата Сообщение от cossack5 Посмотреть сообщение
Вы используете прекомпилированные заголовки? Если да, то отлючите.
Я это конечно понимаю, но это лобовое отключение делает только хуже, вот новая ошибка:
error C2664: sndPlaySoundW: невозможно преобразовать параметр 1 из "const char [9]" в "LPCWSTR"
Выходом из этого есть только использование С или запись функции, не имею желания писать функцию, так как не хочу запутаться в коде (итак уже скоро будет функция на функции), а С вообще не знаю, понимаю что они похожи, но еще пару дней тратить что б разобраться - не хочу! Какие есть еще варианты?
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
10.08.2012, 16:50     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #4
Цитата Сообщение от mr_free Посмотреть сообщение
Я это конечно понимаю, но это лобовое отключение делает только хуже, вот новая ошибка:
error C2664: sndPlaySoundW: невозможно преобразовать параметр 1 из "const char [9]" в "LPCWSTR"
Выходом из этого есть только использование С или запись функции, не имею желания писать функцию, так как не хочу запутаться в коде (итак уже скоро будет функция на функции), а С вообще не знаю, понимаю что они похожи, но еще пару дней тратить что б разобраться - не хочу! Какие есть еще варианты?
Отлючите юникод в настройках (свойствах проекта). Если студия, то наверняка у вас стоит "Набор символов: Unicode"
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
10.08.2012, 17:04  [ТС]     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #5
Цитата Сообщение от cossack5 Посмотреть сообщение
Отлючите юникод в настройках (свойствах проекта). Если студия, то наверняка у вас стоит "Набор символов: Unicode"
Простите разобрался, но правда не стем что нужно (открыл старую версию проекта, а интересует меня новая)! А вот те ошибки, исправление которых меня интересует:
1>c:\users\13\documents\visual studio 2010\projects\m\m\m.cpp(8): error C2062: тип "void" не требуется
1>c:\users\13\documents\visual studio 2010\projects\m\m\m.cpp(9): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\13\documents\visual studio 2010\projects\m\m\m.cpp(9): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>c:\users\13\documents\visual studio 2010\projects\m\m\m.cpp(52): error C3861: openDevice: идентификатор не найден
Подскажите, пожалуйста...
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
10.08.2012, 17:08     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #6
Покажите ваш код.
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
10.08.2012, 17:19  [ТС]     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #7
Теперь запелил, еще круче, новые
ошибки
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(11): error C2079: "output" использует неопределенный class "std::basic_ofstream<_Elem,_Traits>"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(11): error C2440: инициализация: невозможно преобразовать "const char [9]" в "int"
1> Не существует контекста, в котором такое преобразование возможно
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(12): error C2228: выражение слева от ".flags" должно представлять класс, структуру или объединение
1> тип: int
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(33): error C2297: <<: недопустимо, правый оператор имеет тип "double"
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(33): error C2563: несоответствие в списке формальных параметров
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(33): error C2568: <<: не удается разрешить перегрузку функции
1> c:\program files\microsoft visual studio 10.0\vc\include\ostream(1021): может быть "std::basic_ostream<_Elem,_Traits> &std::endl(std::basic_ostream<_Elem,_Traits> &)"
1> with
1> [
1> _Elem=unsigned short,
1> _Traits=std::char_traits<unsigned short>
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\ostream(1011): или "std::basic_ostream<_Elem,_Traits> &std::endl(std::basic_ostream<_Elem,_Traits> &)"
1> with
1> [
1> _Elem=wchar_t,
1> _Traits=std::char_traits<wchar_t>
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\ostream(1003): или "std::basic_ostream<_Elem,_Traits> &std::endl(std::basic_ostream<_Elem,_Traits> &)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\ostream(977): или "std::basic_ostream<_Elem,_Traits> &std::endl(std::basic_ostream<_Elem,_Traits> &)"
1>c:\users\13\documents\visual studio 2010\projects\3\3\3.cpp(37): error C2228: выражение слева от ".close" должно представлять класс, структуру или объединение
1> тип: int
1>

Что более реально исправить?

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include "stdafx.h"
#include <windows.h>
#include <math.h>
 
 
void processData(const short* data, const int n)
{
    std::ofstream output("data.txt");
    output.flags(std::ios::right+std::ios::fixed);
 
    double avr = 0.0;
    double deviation = 1.0;
 
    const double outDeviation = 13.0f;
    const double outAvr = 13.0f;
 
    for (int i = 0; i < n; i++)
    {
        avr += (double)data[i];
        deviation += (double)(data[i] * data[i]);
    }
 
    avr /= (double)n;
    deviation = sqrt(deviation / (double)n - avr * avr);
 
    for (int i = 0; i < n; i++)
    {
        double conv = (outDeviation * (double)data[i]) / deviation + 
            outAvr - (outDeviation * avr) / deviation;
        output << conv << std::endl;        
        //output << (short)data[i] << std::endl;
    }
 
    output.close();
}
 
void CALLBACK onBufferIn(HWAVEIN hwi, UINT uMsg, DWORD dwInstance, 
                              DWORD dwParam1, DWORD dwParam2)
{
    switch (uMsg)
    {
    case WIM_DATA:
        std::cout << "data message" << std::endl;
 
        LPWAVEHDR lpWaveHdr;
 
        lpWaveHdr = (LPWAVEHDR)dwParam1;
        std::cout << "recorded = " << lpWaveHdr->dwBytesRecorded << std::endl;
        std::cout << "coping.." << std::endl;
 
        void* bufferData = malloc(lpWaveHdr->dwBytesRecorded);
        memcpy((void *)bufferData, (const void*)lpWaveHdr->lpData, lpWaveHdr->dwBytesRecorded);
 
        processData((short*)bufferData, lpWaveHdr->dwBytesRecorded / sizeof(short));
 
        free(bufferData);
        waveInUnprepareHeader(hwi, lpWaveHdr, sizeof(WAVEHDR));
        free(lpWaveHdr->lpData);
 
        break;
    }
}
 
void openDevice()
{
    HWAVEIN hWaveIn;
    WAVEHDR waveHdr;
    WAVEFORMATEX waveFormat;
 
    //open
    waveFormat.wFormatTag = WAVE_FORMAT_PCM;
    waveFormat.nChannels = 1;
    waveFormat.nSamplesPerSec = 44100L;
    waveFormat.wBitsPerSample = 16;
    waveFormat.nBlockAlign = 2; //bytes
    waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign;
    waveFormat.cbSize = 0;
 
    MMRESULT result;
    result = waveInOpen(&hWaveIn, 1, &waveFormat, (DWORD)onBufferIn, 0, CALLBACK_FUNCTION);
    if (result != MMSYSERR_NOERROR) std::cout << "waveInOpen error" << std::endl;
 
    ULONG bufferSize = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign * 1;
 
    ZeroMemory(&waveHdr, sizeof(WAVEHDR));
    waveHdr.lpData = (LPSTR)malloc(bufferSize);
    waveHdr.dwBufferLength = bufferSize;
 
    //prepare
    result = waveInPrepareHeader(hWaveIn, &waveHdr, sizeof(WAVEHDR));
    if (result != MMSYSERR_NOERROR)
        std::cout << "waveInPrepareHeader error " << result << std::endl;
 
    //add buffer
    result = waveInAddBuffer(hWaveIn, &waveHdr, sizeof(WAVEHDR));
    if (result != MMSYSERR_NOERROR)
        std::cout << "waveInAddBuffer error " << result << std::endl;
 
    result = waveInStart(hWaveIn);
    if (result != MMSYSERR_NOERROR)
        std::cout << "waveInStart error" << result <<std:: endl;
 
    Sleep(2000);
    waveInStop(hWaveIn);
}
Несколько строк опущены, так как робочие на 100%!
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
10.08.2012, 17:20     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #8
Цитата Сообщение от mr_free Посмотреть сообщение
Что более реально исправить?
Откуда нам знать, что вы там исправляете, не видя кода?
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
10.08.2012, 17:21  [ТС]     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #9
Цитата Сообщение от cossack5 Посмотреть сообщение
Откуда нам знать, что вы там исправляете, не видя кода?
Так пост выше и есть код!
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
10.08.2012, 17:22     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #10
#include <fstream>
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
10.08.2012, 17:55  [ТС]     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #11
Вот дурак Теперь ошибки со звуковой картой, но пока что я сам посмотрю что можна сделать, а то не хочеться мозг оставлять без нагрузки! Чуть позже отпишусь о результатах! Большое спасибо!

Добавлено через 27 минут
Так решил, все проверил, но вот еще несколько ошибок:
1>3.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInUnprepareHeader@12 в функции "void __stdcall onBufferIn(struct HWAVEIN__ *,unsigned int,unsigned long,unsigned long,unsigned long)" (?onBufferIn@@YGXPAUHWAVEIN__@@IKKK@Z)
1>3.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInStop@4 в функции "void __cdecl openDevice(void)" (?openDevice@@YAXXZ)
1>3.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInStart@4 в функции "void __cdecl openDevice(void)" (?openDevice@@YAXXZ)
1>3.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInAddBuffer@12 в функции "void __cdecl openDevice(void)" (?openDevice@@YAXXZ)
1>3.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInPrepareHeader@12 в функции "void __cdecl openDevice(void)" (?openDevice@@YAXXZ)
1>3.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInOpen@24 в функции "void __cdecl openDevice(void)" (?openDevice@@YAXXZ)
Как теперь уже их исправить? (см. код выше)
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
10.08.2012, 21:04     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #12
mr_free, подключите библиотеку Winmm.lib. Например, так:
C++
1
#pragma comment(lib,"Winmm.lib")
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2012, 22:30     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел!
Еще ссылки по теме:

Генератор случайных чисел C++
C++ Генератор случайных чисел
Генератор случайных чисел C++

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

Или воспользуйтесь поиском по форуму:
mr_free
 Аватар для mr_free
69 / 3 / 0
Регистрация: 08.08.2012
Сообщений: 223
Записей в блоге: 1
11.08.2012, 22:30  [ТС]     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! #13
Цитата Сообщение от cossack5 Посмотреть сообщение
mr_free, подключите библиотеку Winmm.lib. Например, так:
C++
1
#pragma comment(lib,"Winmm.lib")
Библиотека подключена в свойствах проекта. Другие варианты?
Yandex
Объявления
11.08.2012, 22:30     Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел!
Ответ Создать тему
Опции темы

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