Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 22:20   #1
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию Проблема с библиотекой winmm.lib

Подключил библиотеку в проект, но все равно при компиляции выскакивает ошибка со ссылкой на неразрешенный символ. Кричит именно на функции waveInGetNumDevs, waveOutGetNumDevs, waveInGetDevCaps, waveOutGetDevCaps.
Microsoft Visual Studio 2010
Задача программы, получение всех звуковых устройств.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <list>
#include <iostream>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
struct device 
{
	char name[30];
	int id;
	char support[50];
};
void GetInputDevices();
void GetOutputDevices();
using std::list;
list<device> devices;

void main()
{
	printf("Recording Devices\n");
	GetInputDevices();
	printf("PlayBack Devices\n");
	GetOutputDevices();
	system("pause");
}

void GetInputDevices()
{
	int waveInDevicesCount = waveInGetNumDevs();

	if (waveInDevicesCount > 0)
	{
		for (int i = 0; i < waveInDevicesCount; i++)
		{
			LPWAVEINCAPS waveInCaps;
			waveInGetDevCaps(i,waveInCaps,sizeof(waveInCaps));
			device info;
			strcpy(info.name,waveInCaps->szPname);
			printf("%s",waveInCaps->szPname);
			sprintf(info.support,"%s",waveInCaps->dwFormats);
			printf("%s",waveInCaps->dwFormats);
			info.id = i;
			devices.push_back(info);
		}
	}
}

void GetOutputDevices()
{

	int waveOutDevicesCount = waveOutGetNumDevs();
	if (waveOutDevicesCount > 0)
	{
		for (int i = 0; i < waveOutDevicesCount; i++)
		{
			LPWAVEOUTCAPS waveOutCaps;
			waveOutGetDevCapsA(i,waveOutCaps,sizeof(waveOutCaps));
			device info;
			strcpy(info.name,waveOutCaps->szPname);
			printf("%s",waveOutCaps->szPname);
			sprintf(info.support,"%s",waveOutCaps->dwFormats);
			printf("%s",waveOutCaps->dwFormats);
			info.id = i;
			devices.push_back(info);
		}
	}
}
Помогите, пожалуйста.
alezha вне форума Ответить с цитированием
Старый 12.05.2012, 22:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://msdn.microsoft.com/en-us/library/aa910397.aspx
в каком библиотеке эта функция видите?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.05.2012, 22:45   #3
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
а я вот такое нашел
alezha вне форума Ответить с цитированием
Старый 12.05.2012, 22:48   #4
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
http://msdn.microsoft.com/en-us/library/aa910397.aspx
в каком библиотеке эта функция видите?
Ну, может Windows Mobile 6.5 она и в другой библиотеке.
Но у меня на win7 приведенный код компилируется, правда не работает.
Так как функциям подсовывается неинициализированный указатель.
LPWAVEINCAPS LPWAVEOUTCAPS
EUGY вне форума Ответить с цитированием
Старый 12.05.2012, 22:50   #5
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Ну, может Windows Mobile 6.5 она и в другой библиотеке.
Но у меня на win7 приведенный код компилируется, правда не работает.
Так как функциям подсовывается неинициализированный указатель.
LPWAVEINCAPS LPWAVEOUTCAPS
А в чем компилируете?
alezha вне форума Ответить с цитированием
Старый 12.05.2012, 22:52   #6
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Для чистоты эксперимента: Microsoft Visual Studio 2010
стандартный консольный проект, юникод отключен
EUGY вне форума Ответить с цитированием
Старый 12.05.2012, 22:55   #7
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

Я изначально создал: "Пустой проект".
alezha вне форума Ответить с цитированием
Старый 12.05.2012, 22:59   #8
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Я изначально создал: "Пустой проект".
Тоже компилируется без проблем. Приведите номер и описание ошибки.
EUGY вне форума Ответить с цитированием
Старый 12.05.2012, 23:05   #9
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

Ошибка 7 error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInGetDevCapsA@12 в функции "void __cdecl GetInputDevices(void)" (?GetInputDevices@@YAXXZ)
alezha вне форума Ответить с цитированием
Старый 12.05.2012, 23:36   #10
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Может посоветовать открыть проводник и поиском посмотреть наличие разных winmm.lib
И явно задать нужную.
Код:
#pragma comment(lib, "C:\\Program Files\\Microsoft SDKs\\Windows\\v7.0A\\Lib\\winmm.lib")
У себя смог сымитировать ошибку только подключив левую -x64 библиотеку, компилируя под -x86
EUGY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не смог подключить библиотеки (d3d10.lib,d3dx10.lib) Russel32 Visual C++ 1 09.05.2012 18:43
проблема с библиотекой Boost при генерации чисел по закону Бетта-распределения Petruha-nsk Общие вопросы C/C++ 2 08.03.2012 10:16
Проблема с библиотекой ASGC6.LIB, пакета компонентов TMS Sparkman Общие вопросы C/C++ 1 16.09.2010 05:12
графика.проблема с библиотекой V@mpire Общие вопросы C/C++ 2 30.05.2010 23:29
Проблема с библиотекой igroman PHP 2 11.01.2009 11:07