问题 放入myLib 文件下,经常产生cpp的函数实现,无法被找到 产生错误 ld return xxxx
注意 有两个项目 一个 offline_asr_sample 一个 cwsl_sample 两个不同;
处理方法
1.在asr_pro_sdk\projects\offline_asr_sample\project_file\source_file.prj 下添加相应的cpp文件地址
如下
source-file: ../myLib/test.cpp
源文件包含的地址为asr_pro_sdk\projects ;myLib 在上一层,从而需要添加 ../
2 先编辑项目
查看 asr_pro_sdk\projects\offline_asr_sample\project_file\build\source_file.mk
内是否包含了相应的自定义的文件
查看 \asrpro\asr_pro_sdk\projects\offline_asr_sample\project_file\build\objs下是否生成了相应的.O文件
3.重新 ./rebuild 一下,否则修改的未必被正确编辑入.0文件中
h文件 test.h
#ifndef __MYTEST
#define __MYTEST
class mytest
{
public:
void test();
int num = 0;
int test2();
};
#endif
cpp文件 test.cpp
#include "test.h"
#include "HardwareSerial.h"
void mytest::test()
{
//uint8 t = 10;
Serial.print("mytest");
}
int mytest::test2()
{
num ++;
return num;
}
主文件
#include "asr.h"
extern "C"{ void * __dso_handle = 0 ;}
#include "setup.h"
#include "HardwareSerial.h"
#include "test.h"
uint32_t snid;
void ASR_CODE();
void app();
mytest test;
//{speak:小蝶-清新女声,vol:10,speed:10,platform:haohaodada}
//{playid:10001,voice:欢迎使用语音助手,用天问五幺唤醒我。}
//{playid:10002,voice:我退下了,用天问五幺唤醒我}
/*描述该功能...
*/
void ASR_CODE(){
//语音识别功能框,与语音识别成功时被自动调用一次。
set_state_enter_wakeup(15000);
switch (snid) {
case 0:
Serial.print("hello");
break;
case 1:
digitalWrite(4,0);
Serial.print("on");
break;
case 2:
digitalWrite(4,1);
Serial.print("off");
break;
}
}
void app(){
//操作系统的一个线程,独立主循环任务,可支持多个类似线程任务。
//当存在多个线程任务时,注意优先级与占用内存设置。
while (1) {
test.test();
Serial.println("hello");
delay(100);
}
vTaskDelete(NULL);
}
void hardware_init(){
//需要操作系统启动后初始化的内容
vol_set(7);
setPinFun(13,SECOND_FUNCTION);
setPinFun(14,SECOND_FUNCTION);
Serial.begin(9600);
Serial.println("hello");
xTaskCreate(app,"app",128,NULL,4,NULL);
vTaskDelete(NULL);
}
void setup()
{
//需要操作系统启动前初始化的内容
//{ID:0,keyword:"唤醒词",ASR:"天问五幺",ASRTO:"我在呢"}
//{ID:1,keyword:"命令词",ASR:"打开继电器",ASRTO:"已经打开继电器"}
//{ID:2,keyword:"命令词",ASR:"关闭继电器",ASRTO:"已经关闭继电器"}
setPinFun(4,FIRST_FUNCTION);
pinMode(4,output);
digitalWrite(4,0);
}
在asr中包含头文件 注意 ../ ; mylib 还是直接 #include "test.h"