Не могу связать Hello World! - PullRequest
3 голосов
/ 27 апреля 2010

Ребята, это код, скопированный из книги (Программирование Windows 5-е издание):

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;

     return 0 ;
}

Ссылка на тему, в которой рекомендуется эта книга.Не могу скомпилировать его с VS2010.Что я делаю неправильно?

Error   1   error LNK2001: unresolved external symbol _WinMainCRTStartup

Спасибо.

Ответы [ 3 ]

5 голосов
/ 27 апреля 2010

Это будет зависеть от того, как вы настроите проект. В VS2010, если я создаю новый проект через Файл-> Новый-> Проект, Visual C ++, Пустой проект, затем добавляю новый файл C ++ и копирую ваш код, он компилируется и работает просто отлично.

Если вы создали проект другого типа, возможно, он использует разные библиотеки ссылок. Попробуйте щелкнуть правой кнопкой мыши свой проект в обозревателе решений, перейдите в Свойства-> Компоновщик-> Система и установите для Подсистемы значение "Windows (/ SUBSYSTEM: WINDOWS)

API-интерфейсы Win32 старые, но по большей части они идеально подходят для программирования на Windows. Windows проделала большую работу, чтобы гарантировать, что до тех пор, пока вы будете следовать документации, старые API не изменятся. Вы все еще можете скомпилировать 16-битный код Windows 3.1 с 1992 года и запустить его на 32-битной Windows 7.

Edit: Также может быть так, что в Properties-> C / C ++ -> Advanced у вас есть Omit Default Library Name, установленное на «Yes», ​​вы, вероятно, хотите, чтобы оно было на «No»

Или также свойства-> Linker-> Input-> Ignore Default Libs должны быть установлены на No.

2 голосов
/ 27 апреля 2010

Вам нужно установить настройки компоновщика проекта для создания программы с графическим интерфейсом Windows, а не консольной программы:

  • «Линкер / Система / Подсистема» должен быть установлен в «Windows (/ SUBSYSTEM: WINDOWS)»

Обычно этот параметр устанавливается правильно при создании проекта и выборе шаблона приложения Windows GUI. К сожалению, если для проекта задан неправильный тип приложения, настройка немного скрыта (мне потребовалось немного копать, чтобы найти ее).

0 голосов
/ 21 февраля 2012

Убедитесь, что вы действительно добавили исходный файл в проект. Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...