我正在使用 Qt、CMake 和 VS2010 编译器。当我链接一小段测试代码时似乎有问题。链接器给出以下错误:
plotter.cpp.obj : error LNK2001: unresolved external symbol "public: virtual str
uct QMetaObject const * __thiscall Plotter::metaObject(void)const " (?metaObject
@Plotter@@UBEPBUQMetaObject@@XZ)...
(持续一段时间)
当我尝试在以下代码中从 QObject 继承时发生错误:
class Plotter : public QObject
{
Q_OBJECT
public:
如果我省略 Q_OBJECT,程序链接,但我不能在运行时使用类插槽。我注意到没有为 plotter.h 生成 moc 文件。这是我的 CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
project (ms)
SET(CMAKE_BUILD_TYPE "Release")
FIND_PACKAGE(Qt4)
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
LINK_LIBRARIES(
${QT_LIBRARIES}
)
set(all_SOURCES plotter.cpp main.cpp dialog.cpp)
QT4_AUTOMOC(${all_SOURCES})
add_executable(ms ${all_SOURCES})
target_link_libraries(ms ${LINK_LIBRARIES})
为dialog.cpp生成了一个moc文件,但没有为plotter.cpp生成一个moc文件,这怎么可能?
谢谢!