当前位置: 代码迷 >> QT开发 >> Q_INIT_RESOURCE的使用有关问题 多谢
  详细解决方案

Q_INIT_RESOURCE的使用有关问题 多谢

热度:232   发布时间:2016-04-25 04:59:11.0
Q_INIT_RESOURCE的使用问题 谢谢
#include <QApplication>
#include "qmainwindow.h"


int main(int argc, char *argv[]) 

Q_INIT_RESOURCE(application);

QApplication app(argc, argv);
app.setOrganizationName("Trolltech");
app.setApplicationName("Application Example");
  QMainWindow mainWin;
#if defined(Q_OS_SYMBIAN)
mainWin.showMaximized();
#else
mainWin.show();
#endif
return app.exec();


编译出错:

Error 1 error LNK2019: unresolved external symbol "int __cdecl qInitResources_application(void)" (?qInitResources_application@@YAHXZ) referenced in function _main testCpp.obj testSln


请问这是什么错误??

------解决方案--------------------
Q_INIT_RESOURCE 是个宏,展开了就是调用一个函数,你的资源编译进去后,应该会自动生成这个函数的。如果没有就当然会链接错误了。
------解决方案--------------------
你可以去QT官网看看。

个人看法:Q_INIT_RESOURCE是Qt的资源机制(resource mechanism),它使程序在编译时将图片存储在.cpp文件中,运行时连接它。这要求你建立一个Qt资源文件***.qrc,在***.qrc中指定图片位置。编译时编译器将***.qrc中指定的图片以二进制数的形式存储到Qt自动建立的名为qrc_***.cpp的文件中,这里的***就是你建立***.qrc时的名字,而你在main()函数中使用Q_INIT_RESOURCE(name)宏时的name也必须是这个***。

所以,你这个程序里没有用到图片,根本没必要用(也不能用,因为找不到qrc_application这个文件)这句Q_INIT_RESOURCE(application);,将它删了就可以正常运行了。
  相关解决方案