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函数的参数一致

打赏
  • 微信
  • 支付宝
评论
来发评论吧~
···

歌手: