我正在尝试建立一个基本的Qt“Hello,world!” Visual Studio中的应用程序。
我得到moc
步骤(我认为),但现在我对如何修复此链接器错误感到茫然:
1>moc_mainwindow.obj : error LNK2001: unresolved external symbol "public:
static struct QMetaObject const QMainWindow::staticMetaObject"
(?staticMetaObject@QMainWindow@@2UQMetaObject@@B)
我做了很多搜索,但我不知所措。
以下是我的包含目录:
i:\Qt\4.6.3\include\QtCore;
i:\Qt\4.6.3\include\QtGui;
i:\Qt\4.6.3\include;
i:\Qt\4.6.3\include\ActiveQt;
reease;
.;
i:\Qt\4.6.3\mkspecs\win32-msvc2008
以下是我要链接的库:
i:\Qt\4.6.3\lib\QtGui4.lib;
i:\Qt\4.6.3\lib\QtCore4.lib;
gdi32.lib;
comdlg32.lib;
oleaut32.lib;
imm32.lib;
winmm.lib;
winspool.lib;
ws2_32.lib;
ole32.lib;
user32.lib;
advapi32.lib;
libpng.lib;
msimg32.lib;
shell32.lib;
kernel32.lib;
uuid.lib;
有没有人有任何想法?
答案 0 :(得分:6)
qmake将从.pro文件中的头文件生成moc voodoo。由于你没有使用qmake,但它是一个原生的视觉工作室项目,这可能是问题的原因。
如果您使用qmake生成您的视觉工作室项目,您的所有问题都将消失,生活将变得甜蜜。大概!
我正在使用开放的2010.05;显然你想用你的版本替换正确的路径。
设置环境
从开始菜单启动2010命令环境
-set include =%include%; C:\ Qt \ 2010.05 \ qt \ include
-set lib =%lib%; C:\ Qt \ 2010.05 \ qt \ lib
-set path =%path%; C:\ Qt \ 2010.05 \ qt \ bin
-set QMAKESPEC = win32-msvc2010
编写代码,创建文件等
生成初始的pro和makefile并启动VS
-qmake -tp vc
-qmake
你现在应该有一个makefile - 通过运行检查它是否有效:
-nmake
现在推出视觉工作室
-VCExpress.exe / useenv
-XXX.vcxproj现在可以打开
如果这不起作用,您可能需要针对visual studio构建qt。这非常简单 - 转到qt目录(在visual studio express命令窗口中)并输入:
configure.exe -platform win32-msvc2010 -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-multimedia -no-qt3support -fast
答案 1 :(得分:2)
您无法在VC ++的Express版本上安装Qt VS插件。假设您已经编译了moc,还需要确保在链接时包含相应的库(* .lib文件)。这属于项目属性>链接器>输入>额外的依赖关系。
您至少需要qtcore4.lib。
还要确保Qt库路径位于库搜索路径中。在我的电脑上,它是c:\ qt \ 4.6.2 \ lib。
答案 2 :(得分:2)
我能够使用http://rajorshi.net/blog/2009/01/using-qt-with-msvc-express-2008/和http://portfolio.delinkx.com/files/Qt.pdf作为指南,让QT与Visual C ++ Express 2010一起使用。以防任何人仍有问题。
答案 3 :(得分:0)
您是否先使用qmake创建了visual studio项目?问题似乎是moc编译。你有安装的qt插件和环境变量中的qt路径吗?你可以加你好世界代码,这样我可以看一下吗?
答案 4 :(得分:0)
您需要添加命令以生成QT元类,然后还将生成的文件作为c ++代码包含在项目中。
生成QT元类:
首先,将您的QT bin路径添加到可执行目录中。 (这在配置属性> VC ++目录中)
将包含Q_OBJECT宏的Header文件添加到项目中。
多选您的头文件,然后右键单击头文件,单击属性。
moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"
QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp
(可选)$(ProjectDir)MetaObjects\moc_%(Filename).cpp