OMRON新的NB7触摸屏号称支持c89语言,但是我进去一看其每个生成的用户c文件,都有一个MainEntry()似乎是开放给上级某个虚拟引擎调用的,用户c文件无法看到其他的用户c文件,也无法共享函数和数据结构。
我试着在项目文件夹里查找用户生成.c文件,的确是找到了,然后在同一fold中手动建立一个info.h文件,在用户.c文件中加上#include "info.h"字段,回NB7软件编译,结果报告找不到info.h,在编译的过程中发现OMRON使用了arm-linux-gcc编译器,然后生成.dll文件,说明编译器是正宗的,不过查找路径不包含用户文件夹。
在OMRON创建的用户.c文件中发现有#include "math.h"字段,说明编译过程中要读取math.h的文件,于是全盘大搜索,终于在
G:\Program Files\OMRON\NB-Designer_V1.03_ENU\cygwin\bin
和G:\Program Files\OMRON\NB-Designer_V1.03_ENU\MinGW\bin
找到了,于是将在MinGW\bin下面建立子目录bao,将info.h复制进去,.c文件中加上#include "./bao/info.h",编译,还是报错
再在cygwin下面做同样操作,编译成功。
于是我想当然的将MinGW\bin\bao去除,编译失败。
说明这两个地方都要放.h文件,否则就会找不到。
于是我恢复了删除的目录,又在.h文件中增加了一些功能,编译成功,并且功能也能执行,我的NB7从此就可以共享函数和数据结构了。
将逻辑加在.h文件中还可以做到关键算法保密,因为OMRON会将代码打成pkg包然后传给触摸屏,这个pkg包如果知道密码是可以反编译的(其实就是解压回工程文件夹),但是.h放在系统文件夹而不是工程文件夹,是应该不会被压缩或者解压回pkg包的。