Qt c++ -未定义的参考…内联QImage自定义函数
Qt C++ - undefined reference to ... inline QImage custom function
在我的应用程序中,有几个函数我需要在不同的线程中在不同的时间使用,我不想到处复制粘贴它们。
所以我做了一个commonfunctions.cpp
和一个commonfunctions.h
,并把它们包括在不同的地方。然而,有一个功能(众多功能中的一个)拒绝工作。
错误:
undefined reference to `CommonFunctions::cvMatToQImage(cv::Mat const&)'
commonfunctions.cpp中有这样一个函数:
inline QImage CommonFunctions::cvMatToQImage(const cv::Mat &inMat) {
(....)
}
commonfunctions.h
#ifndef COMMONFUNCTIONS
#define COMMONFUNCTIONS
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QImage>
#include "opencv/cv.h"
#include "opencv/highgui.h"
class CommonFunctions
{
public slots:
inline QImage cvMatToQImage(const cv::Mat &inMat);
void morphImage(cv::Mat threshold);
void detectingMarkers(cv::Mat threshold, cv::Mat frame, cv::Mat roi,
int markerSizeMin, int markerSizeMax, int markerNumber,
int roiX, int roiY, bool tracking,
int &liczbaZgubionych, QString &komunikat);
};
#endif // COMMONFUNCTIONS
kalibracja.cpp中的调用
QImage image(commonFunctions.cvMatToQImage(frame));
我没有忘记在kalibracja中加入#include "commonfunctions.h"
或CommonFunctions commonFunctions;
。cpp
编译器知道它必须编译所有这些。(*。支持文件)
SOURCES += main.cpp
mainwindow.cpp
kalibracja.cpp
guiKalibracja.cpp
commonfunctions.cpp
analiza.cpp
HEADERS += mainwindow.h
kalibracja.h
analiza.h
commonfunctions.h
当我只是包含一个*.cpp文件它工作,但a)这不是一个很好的方式来做事情,我认为,和b)不会让我在不同的线程中包含函数。
是什么导致了这个错误?调用有问题的函数的正确方法是什么?
我不认为你可以在.cpp
文件中声明内联成员函数。摘自另一个答案:
注意:函数的定义({…}之间的部分)必须放在头文件中,除非该函数仅在单个.cpp文件中使用。特别是,如果您将内联函数的定义放入.cpp文件中,并从其他.cpp文件中调用它,则将从链接器获得"未解析的外部"错误。
您需要编译 kalibracja.cpp
和commonfunctions.cpp
,然后将它们链接在一起。
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 不同翻译单元中不可重载的非内联函数定义
- 头文件、宏和内联函数c++
- 内联函数中具有内部链接的全局变量
- 内联程序集printf将整数解释为地址
- 内联如何影响模块接口中的成员函数
- 检测 COFF 对象文件中C++内联符号
- 在C++中使用内联方法时出现未定义的符号错误
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 同时具有"外部"和"内联"说明符的变量
- 如何将内联匿名函数分配给C++函数指针
- GCC 会优化内联访问器吗?
- COUT 无法提供输出可能是由于内联组装
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 内联静态数据的初始化
- C++内联运算符重载中,请参阅当前对象
- 使用内联函数 c++ 的未定义引用
- Qt c++ -未定义的参考…内联QImage自定义函数