Ошибка компоновщика SFML: неразрешенный внешний символ _WinMain @ 16, Visual Studio 2012

Я смог получить урок № 1 скомпилировать нормально. Но я не могу получить 2-й Скомпилировать.

Когда вы делаете новый -> Проект, может одна из этих настроек мешает? Уверен, я сделал пустой проект, иначе утешил.

В чем дело?
ошибка компиляции:

Error   1   error LNK2019: unresolved external symbol _WinMain@16 referenced in function
___tmainCRTStartup  C:\...\02-videomode-iterate\MSVCRTD.lib(crtexew.obj)    02-videomode-iterate
Error   2   error LNK1120: 1 unresolved externals   C:\...\Debug\02-videomode-iterate.exe   02-videomode-iterate

весь источник:

#include <SFML/Window.hpp>

int main()
{
sf::Window App(sf::VideoMode(800, 600, 32), "SFML-tut: 02");

bool Running = true;
while (Running)
{
App.Display();
}

return EXIT_SUCCESS;
}

Настройки проекта:

include dir, lib: dir установлены правильно.

c ++ -> препроцессор -> определения препроцессора:

SFML_DYNAMIC

компоновщик -> ввод

пытался: sfml-window.lib а также sfml-window-d.lib (Кажется, Visual Studio всегда использует режим отладки при запуске? Но урок № 1 работал только тогда, когда я не использовал -d версию.

подсистема:

/ SUBSYSTEM: WINDOWS

1

Решение

Когда вы устанавливаете /SUBSYSTEM:WINDOWS флаг, компоновщик будет искать WinMain функция, а не обычная main, У вас есть два варианта:

  1. Изменить на /SUBSYSTEM:CONSOLE, Вы получите раздражающее (или, возможно, полезное) окно консоли, от которого вы можете избавиться FreeConsole,
  2. + Изменить main в WinMain со следующей подписью:

    int CALLBACK WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
    );
    

    Если вам не нужен доступ argc а также argvЭто изменение не должно вызывать особых проблем.


Изменить: Возможно, это тоже стоит посмотреть (скопировано из второго урока):

В операционных системах Windows вы, возможно, создали «Windows
Приложение «проект, особенно если не хотите, чтобы консоль появилась.
В этом случае, чтобы избежать замены основной на WinMain, вы можете связать с
Статическая библиотека SFML_Main и ведение стандартной и переносимой основной записи
точка.

Итак, я полагаю, что сводится к добавлению sfml-main.lib (или аналогичный) к списку библиотек для связи.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru