Just quickly before I start, I have searched SO and Google for a length of time trying to solve this and have been unsuccessful.
I am trying to compile my project, which used to use a certain library for providing GUI functionality based on Windows Forms. Now my company has started to move to Qt, and I decided I would start to convert my small application to support Qt also.
At first it would not compile at all, due to missing headers. Now that is sorted, I am stuck with my final .exe not being able to link due to the following errors.
Creating library Bin\VS_V8\Win32\Debug\Disp.lib and object Bin\VS_V8\Win32\Debug\Disp.exp
QtMainMenu.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall QtMainMenu::metaObject(void)const " (?metaObject@QtMainMenu@@UBEPBUQMetaObject@@XZ)
QtMainMenu.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall QtMainMenu::qt_metacast(char const *)" (?qt_metacast@QtMainMenu@@UAEPAXPBD@Z)
QtMainMenu.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall QtMainMenu::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QtMainMenu@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
Bin\VS_V8\Win32\Debug\Disp.exe : fatal error LNK1120: 3 unresolved externals
Our company has a small "Qt Test App" that was written to play around with, which is where I have based my import from. I can compile and link that fine. From what I have gathered, the following properties must be met with Qt files:
- Make sure QTDir is included
- Add to the UI Files the UIC Compiler
- Add to the Resoruce Files the Resource Compiler
- Add to the created Header Files the MOC compiler.
I noticed I was missing the MOC Build Tool commands, so I have added them to my UI File's header. However this didnt change the linking problem. I read that I should delete all built files and do a clean to solve it. This didnt work either.
I have checked, and Q_OBJECT is defined in the class.
I am using VS2005 with the Qt Addin. I did not start a new project for Qt however, I am just using the old Visual Studio Solution / VCProj.
Any ideas where to go next?
@Cameron Stubber you need
moc
object .. You need to modify Custom Build Step.You can find
Custom Build Step
in header file (which has Q_OBJECT)Properties
by right click. Then type this commands ;But carefull by writing this types you need to change somethings here like
$(QTDIR)
it is my enviroment variables you need to write full form of where your QT located likeD:\qt_5\
and also you need to be carefull
finddialog
you should write your.h and .cpp
files nameAnd then you need to create a folder by right clicking solution explorer
Add\New Filter
.. Make folder name asGenerated Files
And last step right click
Generated Files
add\existing item and you will see Debug folder in your solution Project and addmoc_"projectName".cpp
Then re-build your solution. Problem will be solved.
Also you should add C/C++ /General/Additional Library Directories
And Link/General/Additional Library Directories
Link/Input/Additional Dependencies
But dont forget to change
$(QTDIR)
to yourenviroment variables
or location of your qt folder. LikeD:\qt_4.7.4