나는, QT 창조주의 QT 프로젝트를 구축을 위해 노력하고, 빈 파일을 생성 moc.exe하지만 링크 오류가지고 있었어요 : 어떤 이유QT 오류와 관련된 type_traits
minecraftlauncher.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __cdecl Launcher::MinecraftLauncher::metaObject(void)const " ([email protected]@[email protected]@[email protected]@XZ)
minecraftlauncher.obj : error LNK2001: unresolved external symbol "public: virtual void * __cdecl Launcher::MinecraftLauncher::qt_metacast(char const *)" ([email protected]@[email protected]@[email protected])
minecraftlauncher.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl Launcher::MinecraftLauncher::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@[email protected]@[email protected]@@[email protected])
debug\Launcher.exe : fatal error LNK1120: 3 unresolved externals
, moc.exe
을, 메타 오브젝트 컴파일러 빈 MOC를 생성 한 _ * CPP 파일을, 나는 그것이 QT 창조주에 실행되었던 플래그 명령 줄에서 moc
를 실행 시도
:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include/type_trait(0): Note: No relevant classes found. No output generated.
오류 메시지와 함께 :.
C:\QtSDK\x64\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\x64\include\QtCore" -I"c:\QtSDK\x64\include\QtGui" -I"c:\QtSDK\x64\include" -I"c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include" -I"c:\QtSDK\x64\include\ActiveQt" -I"debug" -I"..\Launcher" -I"." -I"c:\QtSDK\x64\mkspecs\win32-msvc2005" -D_MSC_VER=1400 -DWIN32 ..\Launcher\minecraftlauncher.hpp -o debug\moc_minecraftlauncher.cpp
그리고 같은 오류가 반환되었습니다. 하나씩 여러 개의 플래그를 제거하고 -I"c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include"
으로 좁혔습니다. 어떤 이유로 디렉터리가 포함 경로에있을 때 "관련 클래스를 찾을 수 없습니다"오류가 표시되고 빈 .cpp 파일이 생성되었습니다. 그러나 해당 디렉토리가 이 아니고 포함 경로에이 아닌 경우 moc.exe가 정상적으로 작동합니다.
:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include/type_trait(0)
을 포함한 오류 메시지로 인해 인식되지 않도록 해당 위치에 type_traits
파일의 이름을 변경했습니다. 내가 그랬을 때, moc.exe는 정상적으로 다시 작동했다. (실제로 type_traits는 내가 포함했던 표준 라이브러리 파일의 어딘가에 포함되어있다. 그래서 오류가 type_traits I에 대한 type_traits
을 알고 작은 것과
어딘가에 원인이되고, 나는 그것이 개체에 대한 형식 정보를 컴파일지고 함께 할 수있는 뭔가가 생각합니다. 하지만 왜 그것이 메타 객체 컴파일러를 잘못 만드는지 알 수 없습니다. 왜이 일을하는거야? 왜 type_traits와 함께 moc을하는지, 왜 그것과 무엇이 실패 했는가?
누군가가 제공 할 수있는 통찰력에 대해 매우 고마워 할 것입니다. 이것은 저에게 매우 당혹 스럽습니다.
minecraftlauncher.hpp
파일 :
#ifndef MINECRAFTLAUNCHER_HPP
#define MINECRAFTLAUNCHER_HPP
#include <QMainWindow>
namespace Launcher {
class MinecraftLauncher : public QMainWindow
{
Q_OBJECT
public:
explicit MinecraftLauncher(QWidget *parent = 0);
~MinecraftLauncher();
private:
};
}
#endif // MINECRAFTLAUNCHER_HPP
'minecraftlauncher.hpp' 파일을 보여줄 수 있습니까? – leemes
https://gist.github.com/2941696 –