0.写在前面:
1)涉及的关键词定义:
传入:JavaScript向CAPI传值
传出:CAPI向JavaScript传值
2)关于类和结构体的封装,需要严格执行内存对齐,以防止读取越界,但是避免不了经常会遇到长度不定的数组、字符串等,比较麻烦。所以我们采用的技术方案是将类打平成CAPI的方式进行封装,如下示例:
示例类:
打平成CAPI:
在.Net、Java、JavaScript等封装中再还原成类
1.基础类型
在参数传入、返回值传出时,两边可以直接对应。类似的有指针、int、double等,bool类型一般使用int来对应,字符串传入可以直接使用string与char*对应,如下示例:
JS:
CAPI:
2.基础类型在参数中传出
CAPI:
JS:
1)引用ref模块
2)定义int指针、double指针
3)函数声明
4)封装
3.字符串传出
不建议在返回值中使用char*和string进行对应,测试中发现容易出现char*内存被释放string成乱码的问题,使用如下方法比较保险:
CAPI:
JS:
1)引用ref模块
2)函数声明
3)封装
4.数组
CAPI:
JS:
1)引用ref和ref-array模块
2)定义double数组
3)函数声明
4)封装
5.指针在参数中传出
在实际的封装中遇到参数传出指针的情况,我们使用如下图方式进行封装:
CAPI:
JS:
1)引用ref模块
2)函数声明
3)封装