QT开发报错集锦
1. undefined reference to `__imp__ZN10ObjectTypeC1Ev’
2025.7.14 21:30
解释:说明QT子项目间没有link,例如子项A调用了子项B的代码,但是没有在CMake中使用target_link_libraries将两者link起来。
解决办法:修改CMake,增加:
target_link_libraries(A PRIVATE B)
cmake
2. undefined reference to `Solution::creationCount’
2025.7.14 21:40
解释:说明creationCount作为Solution的静态成员变量没有被初始化。
解决办法:在Solution.cpp中增加:
int Solution::creationCount = 0;
cmake
2. (.rdata$.refptr.NONE[.refptr.NONE]+0x0): undefined reference to `NONE’
2025.7.14 22:19
解释:即便采用了1.中说的方法仍然还有这个问题,那说明是没有对调用的变量或类进行导出声明。
解决办法:在变量或类的声明中增加导出声明,例如_global.h中定义了如下的宏:
/*
* @brief :BaseObject_global.h
* @author :Jiayi XU
* @date :2025-07-11
*/
#ifndef BASEOBJECT_GLOBAL_H
#define BASEOBJECT_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(OBJECTS_LIBRARY)
#define OBJECTS_EXPORT Q_DECL_EXPORT
#else
#define OBJECTS_EXPORT Q_DECL_IMPORT
#endif
#endif // BASEOBJECT_GLOBAL_H
c++
那么只需要增加OBJECTS_EXPORT的声明即可,例如我们需要在变量NONE前面增加:
extern OBJECTS_EXPORT ObjectType NONE;
c++
即可
4. static assertion failed: The slot requires more arguments than the signal provides.
2025.7.14 22:24
解释:说明SIGNAL函数和SLOT函数的参数不一致
解决办法:保证SIGNAL函数和SLOT函数的参数一致