Почему я получаю эти ошибки ссылок?

#c #qt

#c #qt

Вопрос:

Когда я пытаюсь запустить Qt приложение со следующим main.cpp файлом:

 #include <QApplication>
#include "ui_checkabder.h"
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::CheckAbder ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();
return app.exec();
}
  

Я получаю следующие ошибки:

 c:/QtSDK/Desktop/Qt/4.7.3/mingw/lib/libqtmaind.a(qtmain_win.o):-1: In function `WinMain@16':

`c:/ndk_buildrepos/qt-desktop/src/winmain/qtmain_win.cpp:131: error: undefined reference to qMain(int, char **)`

:-1: error: collect2: ld returned 1 exit status
  

И abder.pro выглядит так:

 ######################################################################
# Automatically generated by qmake (2.01a) Mon Apr 18 09:52:56 2011
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH  = .
INCLUDEPATH  = .

# Input
FORMS  = checkabder.ui
  

Как я могу устранить эти ошибки? При условии, что я использую Qt Creator .

Спасибо.

Комментарии:

1. Возможно, вы включаете что-то, что уже определяет main? Например, внешняя библиотека?

2. Не могли бы вы также вставить свой файл .pro?

3. @Фрэнк Остерфельд. Конечно. Я включил это в исходное сообщение

4. @user58855 Вы решили эту проблему?

Ответ №1:

main.cpp не создается. Добавьте следующее в свой файл .pro:

  SOURCES  = main.cpp
  

Ответ №2:

Я сам только что столкнулся с этой проблемой.

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

http://lists.trolltech.com/qt-interest/2005-12/thread00170-0.html

Убедитесь, что компоновщик связывает qtmain.lib с вашей программой, это то, что исправило это для меня.

Старый материал:

Я бы предположил, что ваша библиотека была скомпилирована с некоторыми другими настройками относительно того, что такое char .

Если бы это была Visual Studio, я бы выбрал для параметра обрабатывать w_char как встроенный тип значение false.

Редактировать:

То, что сказал Насзта, заставило меня подумать следующее: попробуйте добавить

 int qMain(int argc, char * array [])
{
    return 0;
}
  

Если это работает, что-то еще может быть сломано (IMO).

Комментарии:

1. ну, единственное, что приходит на ум, это то, что вы не установили связь с соответствующими библиотеками. Вам нужно добавить QtGui и QtCore в качестве модулей в проект, я понятия не имею, как это сделать с помощью QtCreator. Но для файлов pro вам нужен этот QT = gui, он должен быть там по умолчанию.. поэтому удалите этот QT -= gui.

2. Если я правильно помню, qtmain_win.cpp у файла есть внешний интерфейс, который вам нужно предоставить для него. По какой-то причине ваш main несовместим с ним. Извините, я не знаю больше. AFAIK вашего main должно быть достаточно для этого.

Ответ №3:

Как насчет

 QT  = core gui
  

в вашем файле .pro?

Ответ №4:

Попробуйте добавить следующее:

 #ifdef WIN32
#include <windows.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    return main( nCmdShow, amp;lpCmdLine ); 
}
#endif