QT Creator: неопределенная ссылка на «WinMain@16»

Я создаю модульный тест, используя это руководство. Однако при компиляции моего кода я получаю эти две ошибки:

неопределенная ссылка на «WinMain@16».

collect2: ld вернул 1 статус выхода.

почему это происходит?


person hashDefine    schedule 22.05.2013    source источник


Ответы (1)


Вы создали основную функцию, где вы создаете qapplication? Хороший пример есть здесь

Вы также можете получить эту ошибку, когда создаете исполняемый файл DOS вместо исполняемого файла графического интерфейса Windows. Он ищет winmain(), а не main(),

person Jay    schedule 22.05.2013
comment
Я создавал приложение Qt Gui и вызывал свою функцию из MainWindow.cpp после включения файла заголовка, содержащего объявление функции. При этом мне не нужно создавать отдельную основную функцию, не так ли? Однако мне было интересно то, что вы сказали об исполняемом файле DOS. ясно, что я создаю приложение с графическим интерфейсом, а не отдельный файл .exe, так почему же оно не компилируется? другое дело, я создал новый проект: Qt Unit Test. и теперь он работает нормально. Итак, я не могу создать свою собственную функцию тестового модуля, вместо этого я должен создать проект модульного теста qt, не так ли? - person hashDefine; 22.05.2013
comment
Возможно, вы включили заголовочный файл, который определяет основную функцию, но не создает ее экземпляр. Когда он запускает компилятор для создания исполняемого файла приложения, включает ли он файл cpp, содержащий ваш основной? Просто включить заголовочный файл недостаточно. - person Jay; 22.05.2013
comment
Теперь он отлично работает даже с приложением Qt Gui. что я сделал, так это написал в main.cpp эту функцию QTest::qExec(&testString, argc, argv); для выполнения моего модульного теста. Но то, что я делал раньше, вызывало мою тестовую функцию напрямую, не создавая объект, и я снова вызывал ее из неправильного файла (например, MainWindow.cpp), не вызывая QTest::qExec. так это работает сейчас. но, честно говоря, я не слежу за ошибками Qt Unit Test!!! - person hashDefine; 22.05.2013
comment
Рад, что вы добились прогресса. Если вы считаете, что на ваш вопрос был дан правильный ответ, пожалуйста, отметьте ответ как правильный. Это помогает другим, когда у них может быть такая же проблема. - person Jay; 22.05.2013