一个调用了外部halcon库的项目,本来自己把所有封装的函数都放在mainwindow(即qthalconmw)里,后面觉得太麻烦新建了个tools.cpp存放各类函数。
qthalconmw.h
#include"tools.h"
class qthalconmw : public QMainWindow
{
Q_OBJECT
public:
qthalconmw(QWidget *parent = nullptr);
~qthalconmw();
tools mytools;
qthalcon.cpp
#include "tools.h"
mytools.FindTickFrom2(ho_ImageReduced1, ho_ImageReduced2, &ho_Regions, &(*ho_RectangleResult0),
&hv_Row0, &hv_Column0, &hv_tuple0, &hv_result0);//调用tools里函数
tool.h
class tools : public QWidget
{
Q_OBJECT
public:
explicit tools(QWidget *parent = nullptr);
~tools();
void FindTickFrom2 (HObject ho_ImageReduced1, HObject ho_ImageReduced2, HObject *ho_Regions,
HObject *ho_RectangleResult, HTuple *hv_Row, HTuple *hv_Column, HTuple *hv_tuple1,
HTuple *hv_result1);
求解该怎么改
我记得上次回你了,你~tools() 的析构函数写了吗?
不知道你这个问题是否已经解决, 如果还没有解决的话:根据代码内容和问题描述,可以看到是链接器无法找到tools.cpp文件中的函数定义,导致LNK2019错误。解决这个问题的方法有两种:
对于Qt项目的.pro文件,可以添加类似以下代码:
SOURCES += tools.cpp
修改后的tools.h文件内容如下:
class tools : public QWidget
{
Q_OBJECT
public:
explicit tools(QWidget *parent = nullptr);
~tools();
void FindTickFrom2(HObject ho_ImageReduced1, HObject ho_ImageReduced2, HObject *ho_Regions,
HObject *ho_RectangleResult, HTuple *hv_Row, HTuple *hv_Column, HTuple *hv_tuple1,
HTuple *hv_result1)
{
// 在这里添加函数的具体实现
}
};
删掉tools.cpp文件中的函数定义。注意,如果tools.cpp文件中还有其他函数的定义,这些函数的定义也需要移到tools.h文件中。
这两种方法中,方法一是比较常见的做法,将函数的实现代码放在cpp文件中,使项目结构更加清晰。方法二适用于只有一个cpp文件的情况,可以将函数定义直接放在头文件中以简化项目结构。根据您的项目情况选择适合的方法即可。
请提供更多关于工程结构和编译选项的信息,以便更准确地解决问题。