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)封装

最新文章

  1. 2.0 (2)测试pymongo
  2. Repeater嵌套Repeater并取得嵌套Repeater里面的控件
  3. 使用PowerDesigner把oom设计图导出jpg格式的图片
  4. 中科院分词ICTCLAS导入用户词典后分词结果一样?
  5. Mongodb 笔记07 分片、配置分片、选择片键、分片管理
  6. H3C远程登陆配置
  7. jQuery.Hotkeys - lets you watch for keyboard events anywhere in your code supporting almost any key combination
  8. libipq —— iptables用户空间数据包排队库
  9. TCP/IP之TCP交互数据流、成块数据流
  10. 兔子--gradle安装和配置
  11. 正则语言引擎:一个简单LEX和YACC结合运用的实例
  12. 使用JavaScript实现ATM取款机
  13. HTML中设置背景图的两种方式
  14. <c:forEach var="role" items="[entity.Role@d54d4d, entity.Role@1c61868, entity.Role@6c58db, entity.Role@13da8a5]"> list 集合数据转换异常
  15. BZOJ5101 : [POI2018]Powód
  16. Dockerfile构建容器---语法高亮
  17. Axure RP Pro 7.0苏宁易购式标签切换效果教程
  18. Google file system
  19. 分页-jquery.page.js插件在使用时重复触发“上一页”和“下一页”操作
  20. OC basic

热门文章

  1. bnu 51640 Training Plan DP
  2. [转]MySQL存储过程
  3. php循环结构
  4. [ TJOI 2012 ] 防御
  5. [ CodeForces 1064 B ] Equations of Mathematical Magic
  6. Matlab2014的下载和安装激活过程
  7. facade模式-服务-配置----系统生成与配置
  8. 解决[disabled]="true"与formControlName冲突
  9. 18SVN进行版本控制
  10. rem2