在我的應用程序中,我需要在不同時間在不同線程中使用幾個函數,並且我不想將它們複製粘貼到任何地方。Qt C++ - 未定義的引用...內聯QImage自定義函數
所以我做了一個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));
我沒有忘記#include "commonfunctions.h"
或CommonFunctions commonFunctions;
在kalibracja.cpp
編譯器知道有編譯這一切。 (* .pro文件)
SOURCES += main.cpp\
mainwindow.cpp \
kalibracja.cpp \
guiKalibracja.cpp \
commonfunctions.cpp \
analiza.cpp
HEADERS += mainwindow.h \
kalibracja.h \
analiza.h \
commonfunctions.h
時,我只是包括它的工作一個* .cpp文件,而是一個),這不是做的事情,我思的好方法,和b)不會讓我包括函數在不同的線程中。
什麼可能導致此錯誤?調用相關函數的正確方法是什麼?
這是一個鏈接錯誤。編譯和鏈接'commonfunctions.cc'應該可以解決它。 –
commonfunctions.cc? – Petersaber
你是如何編譯你的項目的? –