运行环境:Ubuntu 13.10
目 的:在nodejs中调用mongodb C 接口实现将一个集合中的数据做转换后储存
为另一集合。
-------------------------------------------------------------------------------------------------------------
一个可以调用C/C++编写的nodejs工程的最基本几个文件如下:
pro_name.js
binding.gyp(这个文件的名字是指定的,不能更改)
mypro.cc(通过这个C++文件来调用自己编写的C和C++程序)
-------------------------------------------------------------------------------------------------------------
具体步骤如下:
1、将自己写好con.c和con.h文件放入上述三个文件所在的文件夹内,然后在binding.gyp
中sources处添加con.c。
‘source’:['mypro.cc','con.c']
2、在终端输入node-gyp configure 配置此工程(终端所在的位置应为上述三个文件所
在的目录)
3、因为要使用到mongodb和json的API,所以编译时要加上一些编译选项。进入第二
步产生的build文件夹修改第一个文件Makefile:
因为添加的是C文件所以在cmd_cc处加这里主要是头文件所在位置,如果是C++
文件则在cmd_cxx处添加。
quiet_cmd_cc = CC($(TOOLSET)) $@
cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $< -
I/usr/local/include/json `pkg-config --cflags --libs libmongoc-1.0`
同时也可以在ro.target.mk文件的INC_Release 后面添加:
INC_Release := \
-I/usr/local/include/json
quiet_cmd_cxx = CXX($(TOOLSET)) $@
cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
在mypro.target.mk文件添加库文件所在路径或是相关选项:
$(obj).target/mypro.node: LIBS := $(LIBS) -std=c99 -ljson `pkg-config --cflags --libs libmongoc-1.0`
这一步才是nodejs能够使用C/C++编写接口的主要修改,其他步骤在nodejs官网都能找
到。
而这里也只是用到第三方库时才做修改,如果不需要用到而是用的标准C库则无需修改。
4、正常调用