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

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

Войти
Регистрация
Восстановить пароль
 
Skitalec-x
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
#1

WinMain entry point - C++

22.11.2013, 20:35. Просмотров 1214. Ответов 8
Метки нет (Все метки)

Здравствуйте!

Я только начал изучать WinAPI и, естественно, периодически заглядываю в MSDN. Но сразу же столкнулся с недопониманием.

На странице http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx точку входа предлагается делать таким образом:

C++
1
2
3
4
5
6
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
);
А на странице http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx по другому:

C++
1
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);
В чем разница и как будет более правильно?

Заранее спасибо за ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 20:35     WinMain entry point
Посмотрите здесь:

C++ DLL for C# entry point - C++
heared -> #ifndef _DLLTEST_H_ #define _DLLTEST_H_ #include <string> using namespace std; extern "C"...

Defines the entry point for the console application - C++
// structura.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include...

Defines the entry point for the console application - C++
#include "stdafx.h" #include <iostream> using namespace std; int Prime(unsigned long a) { unsigned long i; if (a ==...

LINK : fatal error LNK1561: entry point must be defined - C++
Создан как Empty project Код программы: namespace program { void main() { } }

undefined reference to winmain@16 - C++
pomogite 4to takoi undefined reference to winmain@16? ya ya napisal metoda sortirovka viborom

Неопределенная ссылка на `WinMain @ 16 ' - C++
учусь программировать в wxdev C++ по книге Шилдта. сделал все как написано а компилятор ругается не понятно на что. вот сам код. //...

Ошибка: undefined reference to `WinMain@16' - C++
Подскажите пожалуйста, что означает эта ошибка и как от нее озбавиться: Linking... ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 20:58     WinMain entry point #2
Skitalec-x,
Это прототип функции винмайн
C++
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
);
А так она вызывается:
C++
    
 
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
22.11.2013, 20:59     WinMain entry point #3
WinMain: The Application Entry Point
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 21:00     WinMain entry point #4
Хотя нет, второй тоже прототип, в общем там же на второй ссылке написан пример:

C++
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow)
{
    return 0;
}
Skitalec-x
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
22.11.2013, 21:10  [ТС]     WinMain entry point #5
Цитата Сообщение от programina Посмотреть сообщение
... в общем там же на второй ссылке написан пример...
[/CPP]
Спасибо за ответы! Как писать правильно - я понял. Но в чем же разница?
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
22.11.2013, 21:19     WinMain entry point #6
перевод от google выдержки из текста ,ссылка выше :

WinMain функция идентична wWinMain , за исключением аргументы командной строки передаются в виде строки ANSI. Предпочтительным является версия Unicode. Вы можете использовать ANSI WinMain функцию, даже если вы компиляции программы как Unicode. Для получения копии Unicode из аргументов командной строки, вызовите GetCommandLine функцию. Эта функция возвращает все аргументы в одну строку. Если вы хотите аргументы как в агду массива стиле, пройти эту строку в CommandLineToArgvW .

оригинал :

The WinMain function is identical to wWinMain, except the command-line arguments are passed as an ANSI string. The Unicode version is preferred. You can use the ANSI WinMain function even if you compile your program as Unicode. To get a Unicode copy of the command-line arguments, call the GetCommandLine function. This function returns all of the arguments in a single string. If you want the arguments as an argv-style array, pass this string to CommandLineToArgvW.
MSDN
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 21:30     WinMain entry point #7
Skitalec-x, вот пример:

C++
#include <iostream>
using namespace std;
 
// это обьявление (или декларация, или прототип) функции, 
// попробуй закомментировать его и посмотри, 
// будет ли программа компилироваться
int func( int );
 
// точка входа
int main()
{
  int a = 5;
  cout << func(a) << endl;
}
 
// определение (дефиниция) функции func
int func(int d)
{
  return d; 
}
LuxArt
33 / 20 / 2
Регистрация: 14.11.2013
Сообщений: 85
22.11.2013, 21:30     WinMain entry point #8
Цитата Сообщение от Skitalec-x Посмотреть сообщение
В чем разница и как будет более правильно?
Вот что накопал в справочной системе
C++
1
2
#define WINAPI __stdcall
#define CALLBACK __stdcall
Получается нет разницы

CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 21:34     WinMain entry point
Еще ссылки по теме:

WinMain@16 что это такое? - C++
При исполнении программы окно работы программы выдаёт число 4 в шестнадцатеричном формате. Что нужно? Существует ли функция Для вывода...

Точка входа отличная от main/WinMain - C++
Случайно наткнулся на код и прямо-таки заинтересовало: Собственно: Насколько я понимаю проблема как раз в SubSystem. Несколько не...

Ошибка в коде undefined reference to 'WinMain' - C++
Вот код: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; using namespace std; class stud { private: char...

Ошибка: In function main: 18 undefined reference to WinMain - C++
Создайте класс, содержащий 2 закрытые переменные (катеты прямоугольного треугольника) и открытые функции (для присвоения значений...

Выдает ошибку [Linker error] undefined reference to `WinMain@16' - C++
Собственно проблема в сабже - выдает gcc.exe &quot;J:\Курсовая БД\Курсовая .c&quot; -o &quot;J:\Курсовая БД\Курсовая .exe&quot; ...


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

Или воспользуйтесь поиском по форуму:
Skitalec-x
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
22.11.2013, 21:34  [ТС]     WinMain entry point #9
Цитата Сообщение от LuxArt Посмотреть сообщение

Получается нет разницы
Большое спасибо!!!
Yandex
Объявления
22.11.2013, 21:34     WinMain entry point
Ответ Создать тему
Опции темы

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