Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.74
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
#1

Как открыть привод в DEV C++? - C++

15.07.2010, 17:20. Просмотров 4692. Ответов 13
Метки нет (Все метки)

Вся инфа, найденная в гугле, сводится к сиспользованию mciSendString
Неработоспособность этой функции не предполагается. Но, тем не менее, она имеет место быть.
Это не работает:

C++
1
2
3
4
5
6
7
#include <windows.h>
#include <mmsystem.h>
 
int main() { 
 mciSendString ("Set cdaudio door open wait", 0, 0, 0 );
 return 0;
}
Ошибка линкёра, типа он первый раз видит функцию mciSendString. Это при том, что в файле mmsystem.h написано:
C++
1
2
MCIERROR WINAPI mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
MCIERROR WINAPI mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
Пробовал приводить типы всяко. Так, например:

C++
1
2
3
4
5
6
7
8
#include <windows.h>
#include <mmsystem.h>
 
int main() { 
 CONST CHAR stroka [128]= "Set cdaudio door open wait";
 mciSendString ((LPCSTR)stroka, 0, 0, 0 );
 return 0;
}
Бесполезно. Друзья! Пмогите, пожалуйста! Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 17:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как открыть привод в DEV C++? (C++):

Как запустить в Dev C++ - C++
#include&lt;iostream&gt; #include&lt;iomanip&gt; #include&lt;fstream&gt; using namespace std; int main() { ifstream fin(&quot;с:\\input.txt&quot;,...

Как использовать Dev C++? - C++
Помогите мне пожалуйста. Пишу программы на Dev C++, ошибок нет, но программа не работает. Даже самые простые программы. например, ...

Dev-C++ Как пользоваться? - C++
Установил Dev-C++. Не могу понять многое в том числе как графический интерфейс создаватью Может кто ссылкой на хороший мануал поделится?

Как отправить E-mail Dev C++ - C++
Долго искал в гугле, но так и не нашел работающего кода для отправки e-mail. Желательно, чтобы можно было прикреплять файлы к отправке.

Как подключить OpenGL на Dev-C++ - C++
#include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;GL/glut.h&gt;// //2. ÑÎçäà¸ì ôóíêöèþ display void display() { ...

Как запустить програму в dev c++? - C++
Добрый день! Не могу запустить в Dev c++, ругается на строки с cout. 41 C:\Dev-Cpp\main.cpp stray '\171' in program 41...

13
rrock.ru
9 / 9 / 1
Регистрация: 15.07.2010
Сообщений: 19
15.07.2010, 17:44 #2
У тебя 2-ой параметр должен быть NULL...

Вот пример работы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>  
#include <windows.h> 
#include <mmsystem.h>
 
using namespace std;
 
int main()  
{  
  mciSendString("open CDAudio", NULL, 0, NULL);
  Beep(440,1000);   
  cout << "Opening CD-ROM door ..." << endl;  
  mciSendString("set CDAudio door open", NULL, 0, NULL);  
 
  cout << "Closing the CD-ROM door in 5 seconds ..." << endl;  
  Sleep(5000);  
  mciSendString("set CDAudio door closed", NULL, 0, NULL);  
 
  mciSendString("close CDAudio", NULL, 0, NULL);
 
  cin.get(); 
  return 0;  
}
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.07.2010, 17:50  [ТС] #3
Вот 4 раза вызывается
mciSendString

и 4 раза линкёр говорит, что он её не узнаёт

C++
1
2
3
4
[Linker error] undefined reference to `mciSendStringA@16'   
[Linker error] undefined reference to `mciSendStringA@16' 
[Linker error] undefined reference to `mciSendStringA@16' 
[Linker error] undefined reference to `mciSendStringA@16'
0
rrock.ru
9 / 9 / 1
Регистрация: 15.07.2010
Сообщений: 19
15.07.2010, 17:56 #4
а, ну молодец... а кто либу Winmm.lib будет подключать?
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.07.2010, 17:58  [ТС] #5
Ты тень на плетень не наводи, как в твоём исходнике написано,так я и сделал.
0
rrock.ru
9 / 9 / 1
Регистрация: 15.07.2010
Сообщений: 19
15.07.2010, 18:06 #6
Вообще то, если ты внимательно посмотришь описание этой API-функции, то увидишь, что для её работы необходима либа Winmm.lib..

Так что RTFM: http://msdn.microsoft.com/en-us/library/dd757161(VS.85).aspx

P.S. можешь просто добавить в начало кода
C++
1
#pragma comment(lib,"Winmm.lib")
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.07.2010, 18:13  [ТС] #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>  
#include <windows.h> 
#include <mmsystem.h>
#pragma comment(lib,"Winmm.lib")
 
using namespace std;
 
int main()  
{  
  mciSendString("open CDAudio", NULL, 0, NULL);
  Beep(440,1000);   
  cout << "Opening CD-ROM door ..." << endl;  
  mciSendString("set CDAudio door open", NULL, 0, NULL);  
 
  cout << "Closing the CD-ROM door in 5 seconds ..." << endl;  
  Sleep(5000);  
  mciSendString("set CDAudio door closed", NULL, 0, NULL);  
 
  mciSendString("close CDAudio", NULL, 0, NULL);
 
  cin.get(); 
  return 0;  
}
Вот ошибки
C++
1
2
3
4
[Linker error] undefined reference to `mciSendStringA@16'   
[Linker error] undefined reference to `mciSendStringA@16' 
[Linker error] undefined reference to `mciSendStringA@16' 
[Linker error] undefined reference to `mciSendStringA@16'
Вообще, я может и ошибаюсь, но сдаётся мне эта библиотека тут ни пр ичём. ОНа должна автоматом подключаться. Я ведь не подключаю вручную ни kernel32, ни юзер. компилятор и линкёр сам прописывает их в таблицу импорта и всё остальное делают. Но как бы то ни было.
0
rrock.ru
9 / 9 / 1
Регистрация: 15.07.2010
Сообщений: 19
15.07.2010, 19:21 #8
так. ты по-ходу компилишь в mingw.. через Dev-C++?

Добавлено через 1 минуту
Есть стандартный набор библиотек, которые подключаются по-умолчанию.. winmm в них не входит, поэтому её нужно подключать ручками..

Добавлено через 29 минут
туплю..

Вобщем в Dev-C++ нужно зайти в Проект>>Параметры проекта>>Параметры>>Добавить библиотеку>>libwinmm.a

За точность пути не отвечаю.. Писал по памяти..
А так можно и из коммандной строки:
Bash
1
g++ main.cpp -o main.exe -Wl,c:\mingw\lib\libwinmm.a
только подставить свои имена файлов и путь до libwinmm.a.. по идее он должен быть "c:\dev-cpp\lib\libwinmm.a"
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.07.2010, 20:00  [ТС] #9
Что ж, из командной строки получилось, спасибо.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Но как мне быть, если я НЕ ИСПОЛЬЗУЮ ПРОЕКТЫ?

Ну то есть вообще. ТО есть по факту у меня проекты, но формально- нет и твой способ не подойдёт?

То есть я делаю так: создаю папку, в ней главный файл main.cpp, ну и в эту же папку кидаю другие файлы *cpp и потом их прописываю вроде как заголовочные. Потом просто компилю main.cpp и всё

На ютуби тоже нашёл видео как подсоединить эту библиотеку К ПРОЕКТУ.
http://www.youtube.com/watch?v=awl-nIlzaVc

А к отдельному файлу- никак, что ли?
Единственное, что смог сделать: сервис- парамеры среды- параметры компилятора- библиотеки

Там была строчка
lib
Я приписал, стало так:
Код C++
1
2
3
lib
E:/Dev-Cpp/lib/libwinmm.a

(У меня диск E)
Но всё равно не открывается. Или всё же необходимо работать именно с такой сущностью, как ПРОЕКТЫ? Мне неохота переучиваться, честно говоря ради того, чтобы иметь возможность подключать библиотеки... Извините...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Наконец, так тоже красиво: лезем в параметры компилятора и добавляем строчку
C++
1
-Wl,E:\Dev-Cpp\lib\libwinmm.a
В командную строку ЛИНКЁРА
Тоже работает

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Хотелось бы всё ж таки услышать мнение по второму способу.
1
rrock.ru
9 / 9 / 1
Регистрация: 15.07.2010
Сообщений: 19
15.07.2010, 20:23 #10
Гм.. ну если из консоли.. то тут 2 варинта:
1) вручную компилить в объектники все .cpp-шки, а потом линковать всё вместе с подключением libwinmm.a
2) создать Makefile для всего этого распутства и компилить через make
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.07.2010, 20:32  [ТС] #11
А не из консоли? ТОлько через создание проекта?
0
rrock.ru
9 / 9 / 1
Регистрация: 15.07.2010
Сообщений: 19
15.07.2010, 20:35 #12
да.. создавай проект и добавляй туда необходимые файлы.. и в настройках проекта добавляешь либу.
1
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.07.2010, 20:38  [ТС] #13
Спасибо
0
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
12.11.2010, 23:35 #14
Сделал, как показано в видео, всё заработало!
0
12.11.2010, 23:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2010, 23:35
Привет! Вот еще темы с ответами:

Как вывести результат в dev C++ - C++
Только начал изучать C++ написал пару строчек &quot;Hello world&quot; в dev C++ Сразу встал вопрос как ее запустить что бы увидеть ту самую надпись...

Как досоставить меню в Dev C++ - C++
Доброго времени суток уважаемые пользователи форума.Я написал менюшку в Dev C++,все работает отлично,я доволен,но программа работает грубо...

Как подключить у Dev C++ графику - C++
Как подключить у Dev C++ графику ?

Как вставить картинку в Dev-C++ - C++
Пишу курсач..хотелось бы сделать по привлекательнее оформление! как можно вставить картинку?


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru