gpt4 book ai didi

c++ - 如何在 node.js 中使用用 c++ 编写的函数

转载 作者:行者123 更新时间:2023-12-02 10:28:45 24 4
gpt4 key购买 nike

我有一个基本的 c++ 文件。
我有一个 Node 服务器。其中一个函数获取一个数字,进行计算并返回另一个数字。我想让这个函数更快地在 c++ 上重写它。所以我希望能够从 .js 文件中调用在 .cpp 文件中用 c++ 编写的函数。
当我编写 node index.js 时,所有 .cpp 文件都应该被编译,那么它们的函数应该是“require();”在 .js 文件中,然后我希望能够在 .js 文件中将它们用作常用函数:例如calc(number, param); .我该怎么做?
我试图阅读一些关于此的文章并在 YouTube 上观看了一些视频并制作了一些东西,但是当它开始时我得到了很多错误,比如

gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
据我了解,它希望我在我的计算机上安装 python。但是为了什么?我不需要 python,我想从 node.js 编译和执行 c++。
我的实现:
index.js
var testlib = require('./build/Release/testlib');

testlib.addThousandToNumber(20, function(err, res)
{
if (err)
console.error(err);
else
console.log(res);
});
包.json
  "name": "testlib",
"version": "1.0.0",
"description": "",
"main": "run.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"install": "node-gyp clean configure build"
},
"author": "",
"license": "ISC",
"dependencies": {
"nan": "^2.14.1",
"node-gyp": "^7.0.0"
}
}
绑定(bind).gyp
    "targets": [{
"target_name": "testlib",
"sources": ["testlib.cpp", "testworker.cpp"],
"include_dirs": ["<!(node -e \"require('nan')\""]
}]
}
测试库.cpp
#include <nan.h>
#include "testworker.h"

NAN_METHOD(addThoudsandToNumber)
{
auto number = Nan::To<int>(info[0]).FromJust();
auto *callback = new Nan::Callback(info[1].As<v8::Function());
Nan::AsyncQueueWorker(new TestWorker(number, callback));
}
NAN_MODULE_INIT(init)
{
Nan::SetMethod(target, "addThousandTonumber", addThousandToNumber);
}

NODU_MODULE(testlib, init);
测试 worker .cpp
#include "testworker.h"

void TestWorker::Execute()
{
for (int i = 0; i < 1000; i++)
{
myNumber++;
}
}

void TestWorker::HandleOKCallback()
{
Nan::HandleScope scope;
auto NumberJS = Nan::New(myNumber);
v8::Local<v8::Value> argv[] = {Nan::Undefined(), numberJS};
myCallback->Call(2, argv);
}
测试 worker .h
#include <nan.h>

class TestWorker : public Nan::AsyncWorker
{
public:
TestWorker(int number, Nan::Callback * callback) :
Nan::AsyncWorker(callback), myNumber(number), myCallback(callback) { }

~TestWorker() { delete callback }

void Execute();
void HandleOKCallback();
private:
int myNumber;
Nan::Callback * myCallback;
}

最佳答案

可能这就是您正在寻找的:cmake-js
“CMake.js 是一个 Node.js/io.js 原生插件构建工具,其工作方式(几乎)与 node-gyp 完全一样,但它不是 gyp,而是基于 CMake 构建系统”

关于c++ - 如何在 node.js 中使用用 c++ 编写的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63171349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com