2021SC@SDUSC
由于MDK使用的编译器不是GCC,故不能支持一些特殊GCC语法和相应的C库函数。
(1) error.c和error.h文件中strdup函数报错。
处理方法:屏蔽该函数相关代码或者自己实现strdup函数
(2) 屏蔽img_scanner.c文件中的
//#include <unistd.h>
//#include <time.h> /* clock_gettime */
//#include <sys/time.h> /* gettimeofday */
....
// struct timeval abstime;
// gettimeofday(&abstime, NULL);
// iscn->time = (abstime.tv_sec * 1000) + ((abstime.tv_usec / 500) + 1) / 2;
(3) GCC默认void*为char*,MDK的编译器对void指针的加减操作当作错误处理
处理方法:把void指针强制转换为char指针
对于STM32来说ZBar对Heap消耗较大,跟解析的二维码图片大小有关,将系统未使用的内存 全部分配给Heap。
Scatter file 如下
LR_IROM1 0x08000000 0x00100000 { ; load region size_region
ER_IROM1 0x08000000 0x00100000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+R