Strona 1 z 1

Biblioteka #include <mmsystem.h> nie działa z "Unitami"

Nowy postNapisane: sobota, 23 grudnia 2017, 15:12
przez lukagrom
Trochę w kategorii ciekawostek niż problemu (można to obejść). Tworząc nowy unit (New->Unit), gdzie chyba najczęście gromadzi się zewnętrzna klasy i funkcje, nie można dołączyć biblioteki - #include <mmsystem.h> W przypadku starszych "Builderów" pokazuje ponad 50 błędów w pliku - mmsystem.h, natomiast w najnowszych środowiskoacj również kilkadziesiąt błędów, tyle że w pliku - mmsyscom.h. Mniej więcec coś takiego:


[bcc32 Error] mmsyscom.h(113): E2139 Declaration missing ;
Full parser context
v_mmsystem.h(2): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsystem.h
mmsystem.h(35): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsyscom.h
[bcc32 Error] mmsyscom.h(114): E2238 Multiple declaration for 'DWORD'
Full parser context
v_mmsystem.h(2): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsystem.h
mmsystem.h(35): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsyscom.h
[bcc32 Error] mmsyscom.h(113): E2344 Earlier declaration of 'DWORD'
Full parser context
v_mmsystem.h(2): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsystem.h
mmsystem.h(35): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsyscom.h
[bcc32 Error] mmsyscom.h(114): E2139 Declaration missing ;
Full parser context
v_mmsystem.h(2): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsystem.h
mmsystem.h(35): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsyscom.h
[bcc32 Error] mmsyscom.h(115): E2238 Multiple declaration for 'DWORD'
Full parser context
v_mmsystem.h(2): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsystem.h
mmsystem.h(35): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsyscom.h
[bcc32 Error] mmsyscom.h(113): E2344 Earlier declaration of 'DWORD'
Full parser context
v_mmsystem.h(2): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsystem.h
mmsystem.h(35): #include c:\program files\embarcadero\studio\18.0\include\windows\sdk\mmsyscom.h


Co ciekawe problem mija, jeżeli zamiast nowego unita, wskaże się powstanie/dołączanie do projektu nowego "headera" (plik .h), który będzie korzystał z powyższej biblioteki (#include <mmsystem.h>) Kompilacja przebiega wtedy bez problemu.

Re: Biblioteka #include <mmsystem.h> nie działa z "Unitami"

Nowy postNapisane: sobota, 23 grudnia 2017, 18:24
przez polymorphism
Spróbuj przed <mmsystem.h> dać <windows.h>.

Re: Biblioteka #include <mmsystem.h> nie działa z "Unitami"

Nowy postNapisane: sobota, 23 grudnia 2017, 19:37
przez lukagrom
Rzeczywiście pomogło.

Re: Biblioteka #include <mmsystem.h> nie działa z "Unitami"

Nowy postNapisane: wtorek, 26 grudnia 2017, 12:17
przez lukagrom
Dla ciekawostki, analogiczna sytuacja występuje w Visual C++ (u mnie Express Edition 2008).
Samo #include <mmsystem.h> dołączone do programu wywala błędy, jeżeli dołączy się wcześniej #include <windows.h> aplikacja kompluje się bez przeszkód.

Re: Biblioteka #include <mmsystem.h> nie działa z "Unitami"

Nowy postNapisane: środa, 27 grudnia 2017, 12:00
przez polymorphism
Jest tak samo, bo autor tych nagłówków jest ten sam - microsoft. A jak piszesz coś z wykorzystaniem funkcji WinAPI, to prawie zawsze musisz załączyć plik <windows.h>.