用c++的addon在nodejs中输出helloworld
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用c++的addon在nodejs中输出helloworld,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2331字,纯文字阅读大概需要4分钟。
内容图文
这是我在博客园的第一篇博客,作为一个cxy必须要对这个世界说点什么,那肯定就是一句helloworld了
在nodejs中可以通过require进入c++编译成的.node文件,并使其成为一个模块进行引入
那么,通过nodejs输出helloworld要达到什么样的效果呢
(这里test.js内部可以通过console.log("hello, world!")来实现,但这不是我们今天的目的)
先来看一下test.js内部的代码
const hello = require('../build/Release/hello.node') console.log(hello.say())
这里的hello.node是通过c++编译成的addon,通过require引入。然后通过控制台输出hello模块的say函数的返回值
为了完成这项操作,先创建一个文件夹,添加文件如下
其中hello.hpp是没有内容的,可以不添加
然后是hello.cpp中的代码
#include <iostream> #include <string> #include <node.h> #include <nan.h> NAN_METHOD(say) { info.GetReturnValue().Set(Nan::New<v8::String>(std::string("hello, world!")).ToLocalChecked()); } NAN_MODULE_INIT(InitHello) { try { NAN_EXPORT(target, say); } catch (std::exception e) { std::cout << e.what(); } } NODE_MODULE(hello, InitHello)
为了能够在nan层实现c++和nodejs的数据交互,需要通过npm install --save-dev nan来安装nan相关文件
在cpp(或hpp)中引用node.h和nan.h
NODE_MODULE规定整个模块的入口
NAN_METHOD声明函数,函数通过NAN_EXPORT导出,使nodejs可以使用函数
addon模块通过cmake-js进行编译,所以需要添加CMakeLists.txt,里面写入cmake-js需要的信息,可以通过npm install --save-dev cmake-js@5.2.0 来安装本地的cmake-js
CMakeLists.txt
cmake_minimum_required(VERSION 3.3)
set(TARGET_MODULE_NAME "hello")
project(${TARGET_MODULE_NAME})
include_directories(${CMAKE_JS_INC})
file(GLOB SOURCE_FILES ./src/*.cpp ./src/*.hpp)
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})
接下来编辑package.json
{ ??"name":?"hello", ??"description":?"hello?world.", ??"main":?"tests/test.js", ??"dependencies":?{}, ??"scripts":?{ ????"install":?"cmake-js?compile", ????"test":?"mocha?tests" ??}, ??"keywords":?[ ????"core" ??], ??"author":?"maomao", ??"license":?"UNLICENSED", ??"gypfile":?true, ??"devDependencies":?{ ????"bindings":?"^1.5.0", ????"cmake-js":?"^5.2.0", ????"mocha":?"^6.1.4", ????"nan":?"^2.14.0" ??} }
使最后生成hello.node的模块,其本质是动态链接库(dll)
可以在./build/Release中看见hello.node(cmake-js默认为Release模式)
在cmd中进入tests目录,使用node test.js命令成功向世界问好
内容总结
以上是互联网集市为您收集整理的用c++的addon在nodejs中输出helloworld全部内容,希望文章能够帮你解决用c++的addon在nodejs中输出helloworld所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。