CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - mmsystem.h, Turbo C++, Windows 7 x64

mmsystem.h, Turbo C++, Windows 7 x64

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

mmsystem.h, Turbo C++, Windows 7 x64

Nowy postprzez walenw » środa, 9 lutego 2011, 22:05

Witam serdecznie i z góry przepraszam za może śmieszne zapytanie.
W zasadzie to mam dwa problemy.

1. Skopiowałem przykład zapisu danych z mikrofonu do pliku z porad Cyfrowego Barona: Nagrywanie dźwięku i zapis do pliku *.wav ze strony: http://programowanie.cal.pl/cyfbar/song.html#song6. Podczas próby kompilowania programu w środowisku Turbo C++ w systemie 64 bitowym Windows 7 wystąpił błąd:

[C++ Error] mmsystem.h(106): E2257 , expected
[C++ Error] mmsystem.h(114): E2257 , expected
[C++ Error] mmsystem.h(124): E2303 Type name expected
[C++ Error] mmsystem.h(124): E2139 Declaration missing ;
[C++ Error] mmsystem.h(125): E2303 Type name expected


przy czym pliki nagłówkowe miałem zadeklarowane tak:
Kod: Zaznacz cały
#include "windows.h"
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "mmsystem.h"

Program się nie kompiluje przy próbie różnych kombinacji przestawiania kolejności plików nagłówkowych. Czy da się temu problemowi zaradzić?

2.Czy istnieje możliwość prostej realizacji zapisu danych do pamięci, do tablicy danych np. w celu narysowania prostego przebiegu czasowego na Canvasie?

Pozdrawiam i z góry dziękuję za podpowiedzi.
Avatar użytkownika
walenw
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): piątek, 4 lutego 2011, 13:18
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: Turbo C++
Gadu Gadu: 0
    Windows 7Firefox

Re: mmsystem.h, Turbo C++, Windows 7 x64

Nowy postprzez Chlorek » środa, 9 lutego 2011, 22:50

1. Wg. kodu bledu wyglada na to ze blad jest w pliku naglowkowym (headery). KOlejnosc headerow nie ma znaczenia.
2. Co do punktu #2 to sie nie znam.
Kevin Mitnick - łamacz ludzi, nie haseł.
Najlepszy sposób nauki c++... pisać, pisać, pisać, pisać i jeszcze raz pisać!
Avatar użytkownika
Chlorek
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): czwartek, 6 stycznia 2011, 20:20
Lokalizacja: Tu i tam
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Linux Macpup & Win XP Prof & Linux SlackWare & Linux Ubuntu
Kompilator: Dev-C++ v4.9.9.2 (mingw 3.4.2); Code::Blocks v10.05 (mingw najnowsze)
SKYPE: chlorekcl
    LinuxFirefox

Re: mmsystem.h, Turbo C++, Windows 7 x64

Nowy postprzez walenw » środa, 9 lutego 2011, 23:12

Jak pozamieniam wszystkie WIN32 na WIN64 w pliku mmsystem.h np:
Kod: Zaznacz cały
/* general data types */

#ifdef _WIN32
typedef UINT        MMVERSION;  /* major (high byte), minor (low byte) */

to wstępna procedura przygotowawcza do kompilacji dochodzi do pliku MMsystem.hpp i staje na:
Kod: Zaznacz cały
typedef tagWAVEOUTCAPSA *PWaveOutCapsA;

z błędami:

[C++ Error] Mmsystem.hpp(55): E2257 , expected
[C++ Error] Mmsystem.hpp(57): E2257 , expected
[C++ Error] Mmsystem.hpp(67): E2257 , expected
[C++ Error] Mmsystem.hpp(69): E2257 , expected
...


hmm... chyba nic z tego nie będzie :( bo zamiana w pliku mmsystem.h to kiepskie rozwiązanie, ale i tak nie wystarczające do rozwiązania problemu.
Avatar użytkownika
walenw
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): piątek, 4 lutego 2011, 13:18
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: Turbo C++
Gadu Gadu: 0
    Windows 7Firefox

Re: mmsystem.h, Turbo C++, Windows 7 x64

Nowy postprzez Cyfrowy Baron » czwartek, 10 lutego 2011, 09:35

Jak pozamieniam wszystkie WIN32 na WIN64 w pliku mmsystem.h np:


To nic nie da. Te definicje ustawiają odpowiednio metody dla potrzeb systemu Win32. Prawdopodobnie błąd bierze się tego, że biblioteka mmsystem jest niezgodna ze środowiskiem 64-bitowym. By to sprawdzić sprawdź program w środowisku 32-bitowym. Jeżeli nie masz takiej możliwości wrzuć program do załącznika na forum, a my to sprawdzimy za Ciebie. Błąd może również wynikać z faktu, że to system Windows 7.

Sprawdź czy działają jakieś prostsze funkcje tej biblioteki, np:

KOD cpp:     UKRYJ  
PlaySound("c:\\nazwa_pliku.wav", 0, 0);


Sprawdź również czy działa kontrolka TMediaPlayer.



Spróbuj dodać do pliku źródłowego:

KOD cpp:     UKRYJ  
#pragma comment(lib,"Winmm.lib")


pod sekcją include, np:
KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------
#define STRICT

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <memory.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

#pragma comment(lib,"Winmm.lib") // lub: #pragma link "Winmm.lib"




2.Czy istnieje możliwość prostej realizacji zapisu danych do pamięci, do tablicy danych np. w celu narysowania prostego przebiegu czasowego na Canvasie?


Prosto to można to zrealizować z wykorzystaniem biblioteki BASS. Poczytasz o tym w tym wątku: http://programowanie.cal.pl/forum/viewtopic.php?f=4&t=1192#p8245



W sieci można znaleźć mnóstwo opisów tego problemu w środowisku 64-bitowym i to z reguły dla TurboC++.



Uzupełnij profil by było widać z jakim systemem i kompilatorem masz do czynienia.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: mmsystem.h, Turbo C++, Windows 7 x64

Nowy postprzez walenw » sobota, 12 lutego 2011, 12:55

Na wstępie przepraszam, że się nie odzywałem od paru dni.
Sprawa się rozwiązała po tym jak, założyłem nowy projekt i sprawdzałem po kolei co działa. Na pierwszy rzut poszło
Kod: Zaznacz cały
PlaySound("c:\\tada.wav", 0, 0);

... okazało się, że działa. Następnie dodałem odnośnik do pliku
Kod: Zaznacz cały
mmsystem.h.

Program się skompilował. Poszedłem dalej, wstawiłem wszystkie funkcje ze wspomnianego tutoriala, w taki sam sposób, jak to miałem w poprzednim projekcie, no i .....kompiluje się :)
Co zatem się różniło od poprzedniej wersji programu :(
Hmmm....
Zmieniłem położenie mojego projektu zgodnie z tym co zaproponował mi Turbo C++ na domyślny Users->Borland Studio Projects->Katalog_z_projektem. Nie wiem, co dokładnie się stało, ale to już drugi raz mam z tym problem przy tworzeniu programów, czasami zdarza się, że działają i kompilują się programy w innej lokalizacji. Problem moim zdaniem został zidentyfikowany, ale nie do końca rozwiązany.
W każdym razie dziękuję za pomoc!!!
Avatar użytkownika
walenw
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): piątek, 4 lutego 2011, 13:18
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: Turbo C++
Gadu Gadu: 0
    Windows 7Firefox

Re: mmsystem.h, Turbo C++, Windows 7 x64

Nowy postprzez Cyfrowy Baron » sobota, 12 lutego 2011, 14:54

Na przyszłość po utworzeniu nowego projektu zanim cokolwiek w nim dodasz najpierw go zapisz. Dla każdego projektu twórz nowy katalog. Po co tak: Users->Borland Studio Projects->Katalog_z_projektem? Ja np. mam katalog na dysku D:\Embarcadero_projects_2010\ i w tym katalogu tworzę podkatalogi dla każdego nowego projektu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości

cron