• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual Studio Błąd (aktywny) E0167 argument typu "const char *" jest niezgodny z parametrem typu "LPCWSTR"

Cloud VPS
+1 głos
1,380 wizyt
pytanie zadane 15 lutego 2021 w C i C++ przez zuzannaruda Nowicjusz (240 p.)

Witam, 

Stawiam pierwsze kroki w Visual Studio i SDL. Wykorzystałam do nauki kod  z pewnej strony ale niestety mi się nie kompiluje. Nie wiem czy to problem ze źle zainstalowaną biblioteką czy błąd w kodzie. Proszę o pomoc. Występują następujące błędy:

Błąd (aktywny)    E0167    argument typu "const char *" jest niezgodny z parametrem typu "LPCWST"
Błąd (aktywny)    E0020    identyfikator "SDL_SetVideoMode"  jest niezdefiniowany 

Błąd (aktywny)    E0020    identyfikator "SDL_HWSURFACE" jest niezdefiniowany 

Nie jestem zbyt biegła w tym temacie więc proszę o pomoc.

Oto kod:

//tworzenie powierzchni graficznej
#include <Windows.h>
#include <SDL.h>

int main(int argc, char* argv[]) {
	SDL_Surface* screen;
	//inicjujemy biblioteke SDL
	if (SDL_Init(SDL_INIT_VIDEO)) {
		MessageBox(0, SDL_GetError(), "Blad inicjalizacji SDL", MB_OK);
		exit(-1); //wyswietlamy opis bledu i konczymy
	}
	atexit(SDL_Quit); //przy zakonczeniu bedzie wywolane SDL_Quit

	//tworzymy bufor obrazowy 340 X 280 pikseli o glebi 32 bitow
	if (!(screen = SDL_SetVideoMode(320, 240, 32, SDL_HWSURFACE))){
		MessageBox(0, SDL_GetError(), "Blad tworzenia bufora obrazowego", MB_OK);
		exit(-1);//wyswietlamy opis bledu i konczymy
	}

	//wszystko w porzadku. Obraz graficzny pojawia sie na ekanie monitora.
	MessageBox(0, "Wszystko OK", "Ekran SDL", MB_OK);
	
}

 

3 odpowiedzi

+2 głosów
odpowiedź 15 lutego 2021 przez adrian17 Mentor (354,120 p.)
wybrane 24 lutego 2021 przez zuzannaruda
 
Najlepsza

Błąd (aktywny)    E0167    argument typu "const char *" jest niezgodny z parametrem typu "LPCWST"

Do windowsowych funkcji typu MessageBox spróbuj przekazywać "szerokie" stringi (czyli L"Wszystko ok"), albo użyj MessageBoxA.

Błąd (aktywny)    E0020    identyfikator "SDL_SetVideoMode"  jest niezdefiniowany 

Błąd (aktywny)    E0020    identyfikator "SDL_HWSURFACE" jest niezdefiniowany 

Czytasz jakieś mega stare materiały. SDL2 nie ma tych funkcji.

(możesz np rzucić okiem na https://lazyfoo.net/tutorials/SDL/ )

komentarz 24 lutego 2021 przez zuzannaruda Nowicjusz (240 p.)
Dziękuję za pomoc, faktycznie materiały stare, przejrzałam stronę z odpowiedzi, ale znalazłam jeszcze  po polsku:

https://eduinf.waw.pl/inf/prg/011_sdl2/index.php
0 głosów
odpowiedź 15 lutego 2021 przez Psz3mo Mądrala (5,030 p.)
edycja 15 lutego 2021 przez Psz3mo

Nie wiem czy to pomoże, ale ten problem z LPCWSTR np. tak:

MessageBox(NULL, LPCSTR("napis"), LPCSTR("napis"), MB_ICONWARNING);

Ale musisz jeszcze żeby to działało zrobić tak :

Projekt > Właściwości<nazwa> > Zaawansowane > Zestaw znaków > Używaj wielobajtowego zestawu znaków.

Nie znam się na SDL, ale jak trochę poszukałem tutaj https://cpp0x.pl/dokumentacja/SDL-1-2/SDL_Init/538

ty masz inna załączoną bibliotekę, ale do końca nie wiem czy to o to w tym chodzi.

komentarz 15 lutego 2021 przez j23 Mędrzec (195,240 p.)

To rzutowanie jest bez sensu, wszak LPCSTR to nic innego jak const char*, czyli typ zgodny z literałem tekstowym.

Jeśli już, to tak:

MessageBox(NULL, TEXT("napis"), TEXT("napis"), MB_ICONWARNING);

 

0 głosów
odpowiedź 15 lutego 2021 przez VBService Ekspert (256,600 p.)
edycja 15 lutego 2021 przez VBService

What does the 'L' in front a string mean in C++?

MessageBox - winuser.h (include Windows.h)

 

Błąd (aktywny)    E0020    identyfikator "SDL_SetVideoMode"  jest niezdefiniowany 

Błąd (aktywny)    E0020    identyfikator "SDL_HWSURFACE" jest niezdefiniowany 

How to install SDL 2 with Visual Studio on Windows (2020) -> 10 minuta 11 sekunda.  laugh

Podobne pytania

0 głosów
1 odpowiedź 715 wizyt
pytanie zadane 11 listopada 2017 w C i C++ przez milioneq Początkujący (260 p.)
0 głosów
0 odpowiedzi 220 wizyt
pytanie zadane 21 marca 2018 w JavaScript przez kubekszklany Gaduła (3,250 p.)
+1 głos
1 odpowiedź 2,229 wizyt
pytanie zadane 2 sierpnia 2019 w C# przez fourfeeter Początkujący (340 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...