[英]why I can't use normal C++ classes with Qt
谁能告诉我,为什么我不能在Qt程序中使用普通的C ++类。 如果有任何类不是从QObject继承的,编译器会给我一个链接错误,
error LNK2019: unresolved external symbol _main referenced in function _WinMain@16
我在vs2005上使用Qt 4.5.2(由我自己编译)。 请帮我解决这个问题!
编辑:
例...
//UnitManager.h
class UnitManager
{
public:
//-Some code
};
//CivilizationViewer.h
class CivilizationViewer : public QMainWindow
{
Q_OBJECT
//-some code
};
//主要
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CivilizationViewer w;
w.show();
return a.exec();
}
如果我在CivilizationViewer.h中包含UnitManager.h,则编译器会给我该错误。 (尽管我在main.cpp编译器中包含UnitManager.h也会给我错误)
您给出的错误与您正在使用的类无关。 看起来它与您为应用程序设置的入口点有关。 通常,您想在Qt程序中使用main()而不是WinMain()。 确保您的配置设置正确。
您在问题中包含了一些代码。 这是全部吗? 如果是这样,则您缺少主要功能。
谢谢大家 我发现了错误。 在UnitManager.h中有SDL.h,因此我必须添加SDL.lib和SDLmain.lib(正确,对吗?),然后在SDLmain.lib中有main的另一个定义。 因此,在main的定义之间存在冲突。 因此,我在添加qtmaind.lib之前添加了SDLmain.lib。 然后问题解决了,只给出了一个警告,
warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
那是什么警告? 我可以忽略警告,但我想了解它! 谢谢
似乎您需要链接到qtmain.lib(用于调试版本的qtmaind.lib)。 该库提供了WinMain函数,如果您声明/ subsystem:windows,则需要该函数。
资料来源: http : //lists.trolltech.com/qt-interest/2005-12/thread00170-0.html
看来您没有正确包含QT库...(实际的.lib文件)
我认为您实际上制作了一个win32应用程序。 尝试将您的main替换为:
int _tmain(int argc, _TCHAR* argv[]){
your code
}
看到您的错误消息,我不会猜到Qt是您的问题。 您是否安装了Visual Studio Qt集成? 尝试并创建一个新的Qt项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.