Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
zayaz
6 / 6 / 1
Регистрация: 13.03.2010
Сообщений: 34
#1

Hello World и API - C++

20.03.2010, 17:18. Просмотров 1440. Ответов 10
Метки нет (Все метки)

Здравствуйте! Из книги по API переписал код, а он не компилируется. Выдает ошибку:
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [13]' to 'LPCWSTR'
Объясните пожалуйста (по-подробнее) в чем ошибка? Вот собственно код:
C++
1
2
3
4
5
6
#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
    MessageBox(NULL, "Hello, win32", "Hello from box", MB_OK);
return 0;
}
Не разобравшись с 1-м примером дальше читать книгу смысла не вижу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2010, 17:18     Hello World и API
Посмотрите здесь:

Hello, World! - C++
Добрый день. Купил книгу Б.Страуструпа - Принципы и практика использования С++, Напечатал первый код , при компиляции выскочили...

Hello World! - C++
Доброго времени товарищи. Не могу никак найти тему. Где-то на этом форуме есть целая тема в которой предствалена огромная куча вариантов...

Hello world - C++
почему в codeblocks программа #include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; &quot;Hello world!&quot; &lt;&lt; endl; ...

HELLO WORLD - C++
Vsem Privet:) Ranshe ya izuchil yizik PASKAL;:umnik: A tiper C++ :umnik: Na PASKALE bil nekotoriy funksiy rabota so storokami; ...

Goodbye World - C++
Hello World :) Добавлено через 3 минуты прощайте форумчане. надоело мне все эти задачи решать :) и время убивать непонятно на что

Тестирование Hello World - C++
Вот попалась задачка. Новая для меня. Хотелось бы разобраться, но пока не могу понять с чего начать. Подскажите кто знает что делать...

Hello world и компиляторы - C++
начал самостоятельно изучать С++ (раньше к программированию отношения никакого не имел, и в принципе разве, что являюсь продвинутым...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Cepera
52 / 52 / 1
Регистрация: 09.03.2009
Сообщений: 178
20.03.2010, 17:53     Hello World и API #2
'MessageBoxW' : cannot convert parameter 2 from 'const char [13]' to 'LPCWSTR'
Т.е. не может конвертировать из 'const char [13]' в 'LPCWSTR'
Так попробуйте:
C++
1
2
3
4
5
6
7
8
#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
    wchar_t lpText[] = L"Hello, win32";
    wchar_t lpCaption[] = L"Hello from box";
    MessageBox(NULL, lpText, lpCaption, MB_OK);
return 0;
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
20.03.2010, 18:02     Hello World и API #3
zayaz, парень, ты всё сделал правильно. Но, понимаешь, прототипы функций (а нас щас интересуют типы параметров для кажой среды свои)

Поэтому не удивляйся.
В книге ты прочёл, что вторым параметром
MessageBox принимает char*, но не пашет. Оказывается у тебя в среде второй параметр должен иметь тип LPCWSTR!

К чему такое- я не знаю. Но оно есть. Бояться этого не надо, попробуй сделать явное переопределение типов так:

C++
1
2
[FONT=monospace]MessageBox(NULL, (LPCWSTR)"Hello, win32", "Hello from box", MB_OK);
[/FONT]
Вот здесь про типы подробно
Cepera
52 / 52 / 1
Регистрация: 09.03.2009
Сообщений: 178
20.03.2010, 18:27     Hello World и API #4
Цитата Сообщение от kravam Посмотреть сообщение
К чему такое- я не знаю.
Функций MessageBox две: MessageBoxA и MessageBoxW, ansi и unicode соответственно. Для перовой используется const char*, для второй const wchar_t *. Какую функцию использовать зависит от настроек.
Тогда (если хотите приводить типы) вот так более правильно:
C++
1
MessageBox(NULL, (LPCWSTR)L"Hello, win32", (LPCWSTR)L"Hello from box", MB_OK);
Можно еще попробовать литеральные константы обернуть макросом TEXT
C++
1
MessageBox(NULL, TEXT("Hello, win32"), TEXT("Hello from box"), MB_OK);
zayaz
6 / 6 / 1
Регистрация: 13.03.2010
Сообщений: 34
20.03.2010, 20:37  [ТС]     Hello World и API #5
C++
1
2
3
4
5
6
7
8
9
10
#include<windows.h>
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
   wchar_t lpText[] = L"Hello, win32";
    wchar_t lpCaption[] = L"Hello from box";
    MessageBox(NULL, lpText, lpCaption, MB_OK);
    
return 0;
}
unresolved external symbol _main referenced in function ___tmainCRTStartup

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
#include<windows.h>
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
  
    MessageBox(NULL, (LPCWSTR)L"Hello, win32", (LPCWSTR)L"Hello from box", MB_OK);
    
return 0;
}
unresolved external symbol _main referenced in function ___tmainCRTStartup
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
20.03.2010, 20:39     Hello World и API #6
Ты какой средой пользуешься?
zayaz
6 / 6 / 1
Регистрация: 13.03.2010
Сообщений: 34
20.03.2010, 20:40  [ТС]     Hello World и API #7
C++
1
2
3
4
5
6
7
8
9
#include<windows.h>
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
  
  1 MessageBox(NULL, TEXT("Hello, win32"), TEXT("Hello from box"), MB_OK);
    
return 0;
}
syntax error : missing ';' before identifier 'MessageBoxW'

Добавлено через 1 минуту
visual studio 2008
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
20.03.2010, 20:42     Hello World и API #8
а зачем она тебе? Может, что попроще попробуем?
dev c++ я имею ввиду
zayaz
6 / 6 / 1
Регистрация: 13.03.2010
Сообщений: 34
20.03.2010, 21:09  [ТС]     Hello World и API #9
C++
1
2
3
4
5
6
7
8
9
#include<windows.h>
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
 
         MessageBox(NULL, TEXT("Hello, win32"), TEXT("Hello from box"), MB_OK);
        
return 0;
}
О! Вот этот вариант сработал в wxDev-C++!

Все хвалят VS2008 вот и я поставил (дело то нехитрое...). А что, она - не очень?
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
20.03.2010, 21:24     Hello World и API #10
В РУССКОЯЗЫНОЙ DEV С++ сработал бы и первый вариант
...Да кто её знает очень она или нет... Надо что попроще ставить для начала.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2010, 23:06     Hello World и API
Еще ссылки по теме:

Привет World - C++
Написал 1-ый раз программу на студии 2005, в Win 32 project, программа не хочет компилится. #include &quot;stdafx.h&quot; #include...

hello world 10 раз - C++
нужен вывести hello world 10 раз через for и while.как это сделать я не знаю. printf 10 раз не подходит

не работает hello world - C++
Здравствуйте, не работает даже печать строки текста. Компилируется, но выводится один и тот же результат: 7.66248е+053. Использую среду...

Hello World не работает! - C++
Вот что мне сгенерил Wascana Eclipse (Helios release): #include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; &quot;Hello...

Программа hello world! - C++
Помагите написать программу на С-+


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

Или воспользуйтесь поиском по форуму:
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
20.03.2010, 23:06     Hello World и API #11
Поставь все как было в книге)
только потом сделай так
Project -> Project Properties -> Configuration Properties -> General -> Character set -> Use Multi-Byte Character set

Это в меню студии
Yandex
Объявления
20.03.2010, 23:06     Hello World и API
Ответ Создать тему
Опции темы

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