mciSendString - problem z argumentem
Ostatnio zmodyfikowano 2012-12-18 16:38
McAffey Temat założony przez niniejszego użytkownika |
mciSendString - problem z argumentem » 2012-12-18 16:20:10 Witam. Irytuje mnie pewna sytuacja. Gdy utworzę zwykły projekt (w środowsiku code::blocks), dolinkuję plik "libwinmm.a", i dolączem plik .cpp : #include <windows.h> #include <mmsystem.h> #include <conio.h> using namespace std;
int main() { mciSendString( "play muzyka.mid", NULL, 0, NULL ); getch(); return 0; } To wszystko się poprawnie kompiluje i działa. A gdy w projekcie, który ma już sporo kodu, chcę dodać odtwarzanie dźwięku midi, tak samo linkuję, "libwinmm.a" i includuję (między innymi) mmsystem.h i windows.h, po dodaniu linijki mciSendString( "play muzyka.mid", NULL, 0, NULL ); kompilator zwraca błąd : error: cannot convert 'const char*' to 'const WCHAR*' for argument '1' to 'MCIERROR mciSendStringW(const WCHAR*, WCHAR*, UINT, HWND__*)'| Już pomijam to, że aby się skompilowało mogę po prostu dawać zmienną LPCWSTR, ale intryguje mnie, dlaczego ten sam kompilator w tej samej funkcji raz dopuszcza dany argument, a raz nie. Prośba do programistów bardziej doświadczonych i z większą wiedzą : ktoś potrafi rozjaśnić mój przyćmiony umysł ? |
|
xevuel |
» 2012-12-18 16:24:27 [MSDN] mciSendString Ta funkcja ma dwie wersje, Unikodową i ANSI. Pewnie gdzieś coś zmieniłeś, żeby kompilator brał funkcje z przyrostkiem W (na przykład zdefiniowałeś makro UNICODE). |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2012-12-18 16:38:03 Masz rację, zupełnie na to nie zwróciłem uwagi. W swoim projekcie definiuję UNICODE.
Dzięki, wiedziałem że to musi być kwestia tego typu, ale nie potrafiłem zgadnąć co konkretnie - coś dzwoniło tylko nie wiedziałem w którym kościele :P |
|
« 1 » |