我在将一个可运行的程序改写成 node c++ 模块,原来的项目用 Makefile 管理的,最后两条编辑命令是
$(CXX) $(CXXFLAGS) -c -o $@ $<
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
是将两个 cpp 文件编译成连个 o 文件,然后将 o 文件链接成一个可执行文件。
我修改之后现将两个 cpp 文件编译成一个静态库文件,然后以这个静态库为源码生成 .node 文件,编译过程不报错,但最后运行 js 时报错
module.js:597
return process.dlopen(module, path._makeLong(filename));
Error: Module did not self-register.
这不是因为不应该把所有 cpp 都编译成一个静态库?