5.2.1 动态库集成
1. so方式
我们提供了 libaTrustSDK.so
供用户自行调用,头文件位于 API_include
。
1.包含头文件
头文件位于 API_include
└── API_include
├── atrust_code.h
└── atrust_sync_sdk.h
2.编译链接libaTrustSDK.so
如遇到C++符号版本未定义时,请在编译时指定链接/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6
3.设置动态库搜索路径
请确保你的程序能够在运行时正确找到libaTrustSDK.so以及上面提到的libstdc++.so.6。 你可以选择设置如下方式:
- LD_LIBRARY_PATH,设置该环境变量会按照该变量指定的路径去查找依赖库
- rpath,rpath是修改了文件的头部,将搜索路径写到了头部,会改变文件md5
特别注意:设置的LD_LIBRARY_PATH需要能同时找到libaTrustSDK.so以及/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6
2.node插件方式
1.在当前example目录下执行npm install
2.将atrust移动到npm install生成的node_modules内
3.在atrust目录内执行npm install进行node编译
考虑APP集成方使用的node版本存在差异,可以先尝试使用预先编译好的atrust.node, 如遇到node版本问题,则提供了atrust.node模块的源码,可以结合自身的实际环境重新编译atrust.node库。 由于atrust.node会需要使用到libaTrustSDK.so需要根据集成方libaTrustSDK.so的实际存放路径去指定atrust.node的搜索路径, 可以通过设置环境变量LD_LIBRARY_PATH来指定,若出现c++符号版本未定义则参考上面动态库解决方法
4.node使用方法参考Demo
需要注意的是在传递 force参数时一定要指定为true或false,不能为0或1
5.2.2 静态库集成
静态库集成和上面动态库集成相似
Tips:
- 如果出现头文件无法找到问题,请确认CMake是否指定了头文件搜索路径,g++是否指定了-I选项
- 如果出现符号找不到,请确认是否设置了动态库搜索路径
- 如果出现c++符号版本未定义,请确认是否链接了/usr/share/sangfor/aTrust/resources/lib/libstdc++.so.6
5.2.3 node库方式集成
对于使用electron开发的桌面应用,需要集成CSSDK, 使用node.js加载C接口库不好直接调用和使用其中的指针参数。针对这种场景有其他客户定制过node版本的CSSDK接口库,可以单独联系获取对应的node版本SDK接口库。