|
1Qter豆
大家好,我是Qter新手。
我的目的:在串口读取数据槽函数中,迅速对获得的数据进行解码。
槽函数:on_readportbuf;//**信号为readyRead
解码函数:AnalysizePortdata;
两个函数在.h文件中进行声明,并在.cpp文件中进行定义。但是编译显示存在无法解析的符号,原因为解码函数没有识别,如果把槽函数内的解码部分代码注释掉,则编译执行均无问题,请问这是什么问题。
部分代码:.h文件中
private slots:
//**读取端口数据
void on_readportbuf();
public:
//**对接收数据进行解析
void AnalysizePortdata(QByteArray buf, int*& portresult);
.cpp文件中
void WoodScan:n_readportbuf()
{
//**这个判断尤为重要,否则的话,直接延时再接受数据,空闲时会出现高内存占用
//**内容2个字节,报文头2个字节,校验码和终止符各一个字节 = 6个字节。
if (myport->bytesAvailable()>4)
{
return;
}
//**保证接受一条完整的数据,而不是脱节的
myHelper::Sleep(80);
//**接受到的数据是ascii码的16进制数
QByteArray databuf;
databuf = myport->readAll();
//**进行解析
resultbuf = new int[2];
AnalysizePortdata(databuf, resultbuf);
//**转字符串
QString str_data = QString::number(resultbuf[0])+QString::number(resultbuf[1]);
}
//**对收到的数据进行解析
void AnalysizePortdata(QByteArray buf, int*& portresult)
{
int bufles = buf.size();
if (bufles<=4)
{
for (int i=0; i<2; i++)//**初始化,防止数据无穷大,只包含两个字节
{
portresult[i] = -1;
}
return;
}
else
{
for (int i=0 ;i<2; i++)
{
char tp_c = buf.at(i+2);
portresult[i] = atoi(&tp_c);
}
}
}
报错:error LNK2019: 无法解析的外部符号 "public: void __thiscall WoodScan::AnalysizePortdata(class QByteArray,int * &)" (?AnalysizePortdata@WoodScan@@QAEXVQByteArray@@AAPAH@Z),该符号在函数 "private: void __thiscall WoodScan:n_readportbuf(void)" (?on_readportbuf@WoodScan@@AAEXXZ) 中被引用1>F:\S7200\WoodScanSystem\Win32\Debug\\WoodScanSystem.exe : fatal error LNK1120: 1 个无法解析的外部命令
|
最佳答案
查看完整内容
你是不是写错了,应该是下面这样吧
void WoodScan:AnalysizePortdata(QByteArray buf, int*& portresult)
|