最新接手了一个项目精算问题,由于精算部分是c语言做的,而精算的输入是通过typescript 传入 (关于ts这里不讨论),所以需要 将c语言编译后,放在node中运行
首先安装node ,npm,也可以使用 安装nvm 来管理node。
这时你要检查一下你linux系统, 使用命令 cat /proc/version
参考链接 https://www.cnblogs.com/opensmarty/p/10936315.html
接着就是根据不同 linux系统安装 软件
参考链接 https://www.cnblogs.com/linuxAndMcu/p/10717565.html#_label5
我们使用的node-gyp编译,通过将C语言传入C++,然后使用 node-addon-api 编译 C++ ,最后通过node-gyp命令生成一个.node后缀的文件,将其导入node工程,通过require引入就能使用了。 不会的可以下面留言。
参考链接 https://juejin.cn/post/6844903971220357134
https://nodejs.org/api/n-api.html#n_api_functions_to_convert_from_n_api_to_c_types,
将C语言引入C++需要 进行一点改变。 参考链接: c++调用c函数
普通c语言的调用上面就可以了,下面是在c文件中 引入 sqlite3.h 的处理。
首先检查一下linux中的 sqlite3 的位置 ,命令: which sqlite3 或者 find -name sqlite3
然后检查是否有sqlite3的库文件 。参考 链接
https://www.cnblogs.com/hnrainll/archive/2011/09/08/2170489.html
我这里没有 ,需要安装, 参考链接
https://blog.csdn.net/weixin_36474001/article/details/116681471
安装之后 在 根目录 使用命令 检查 库文件,头文件是否已经有了
find -name libsqlitee3.a , find -name sqlite3.h
接着运行,报错
make: 进入目录“/opt/1_hello_world/build”
CC(target) Release/obj.target/addon/node-addon-api/person/Person.o
CXX(target) Release/obj.target/addon/hello.o
make: g++:命令未找到
make: *** [Release/obj.target/addon/hello.o] 错误 127
接着安装 gcc-c++.x86_64 ,参考链接
https://www.cnblogs.com/kerrycode/p/4748606.html
好了,再运行就ok了
demo地址 demo。有问题请在下面留言