0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10

WinMain entry point

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!

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

На странице http://msdn.microsoft.com/en-u... 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-u... 85%29.aspx по другому:

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

Заранее спасибо за ответ.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2013, 20:35
Ответы с готовыми решениями:

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

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

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

8
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 20:58
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)
0
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
22.11.2013, 20:59
WinMain: The Application Entry Point
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 21:00
Хотя нет, второй тоже прототип, в общем там же на второй ссылке написан пример:

C++
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow)
{
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
22.11.2013, 21:10  [ТС]
Цитата Сообщение от programina Посмотреть сообщение
... в общем там же на второй ссылке написан пример...
[/CPP]
Спасибо за ответы! Как писать правильно - я понял. Но в чем же разница?
0
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
22.11.2013, 21:19
перевод от 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
0
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
22.11.2013, 21:30
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; 
}
0
36 / 23 / 10
Регистрация: 14.11.2013
Сообщений: 85
22.11.2013, 21:30
Цитата Сообщение от 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.
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 10
22.11.2013, 21:34  [ТС]
Цитата Сообщение от LuxArt Посмотреть сообщение

Получается нет разницы
Большое спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2013, 21:34
Помогаю со студенческими работами здесь

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

Ошибка "Entry point must be defined"
Не могу запустить свою программу. Main() есть, всё должно работать. Но вылазит ошибка в visual studio 2013: 1&gt;------ Build started:...

Entry Point
Каким образом можно сделать entry point не в функции main(), а в какой-либо другой? Меня это интересует потому, что в зависимости от...

Ошибка: entry point must be defined
Создаю проект Windows forms, сразу хочу сделать release версию, выдает ошибку: entry point must be defined. IDE VS2015.

Fatal error LNK1561: entry point must be defined
Всем доброй ночи! Пишу код для вычисления функции f(x) = (ax - b) + by^2 + d, отлично компилируется, но никак не могу получить работающий...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования. . . .
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
Максимальная производительность C#: Векторизация (SIMD)
stackOverflow 20.04.2025
Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .
Максимальная производительность C#: Процессорный кэш
stackOverflow 20.04.2025
Знакомство с внутренним устройством процессорного кэша — ключевой шаг в написании по-настоящему быстрого кода на C#. Этот слой архитектуры компьютера часто ускользает от внимания разработчиков, но. . .
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
MVC фреймворк в PHP
Jason-Webb 19.04.2025
Архитектурный паттерн Model-View-Controller (MVC) – это не просто модный термин из мира веб-разработки. Для PHP-программистов это фундаментальный подход к организации кода, который радикально меняет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru