第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)教一下該如何在Windows下開發(fā)NodeJS的C/C++原生擴(kuò)展?

請(qǐng)教一下該如何在Windows下開發(fā)NodeJS的C/C++原生擴(kuò)展?

慕哥9229398 2019-11-12 18:10:36
如何在Windows下開發(fā)NodeJS的C/C++原生擴(kuò)展
查看完整描述

3 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

編寫node的C/C++原生擴(kuò)展
[1]打開Windows命令行cmd.exe,進(jìn)入D:\node-v0.10.5,執(zhí)行vcbuild.bat release,最后會(huì)在D:\node-v0.10.5\Release目錄下可以找到編譯好的node.exe、node.lib等文件。
[2]制作編譯安裝批處理文件,此處命名為nodins.bat,文件內(nèi)容如下:

@echo off
if "%1"=="" goto help
mkdir "%1"
mkdir "%1"\include

copy /y src\node.h "%1"\include
copy /y src\node_object_wrap.h "%1"\include
copy /y src\node_buffer.h "%1"\include
copy /y src\node_version.h "%1"\include

copy /y deps\v8\include\*.h "%1"\include\

copy /y deps\uv\include\*.h "%1"\include\

mkdir "%1"\include\uv-private
copy /y deps\uv\include\uv-private\*.h "%1"\include\uv-private

mkdir "%1"\include\ev
copy /y deps\uv\src\ev\*.h "%1"\include\ev

mkdir "%1"\include\c-ares
copy /y deps\uv\include\ares.h "%1"\include\c-ares
copy /y deps\uv\include\ares_version.h "%1"\include\c-ares

mkdir "%1"\lib
copy /y Release\node.lib "%1"\lib

copy /y Release\node.exe "%1"

echo =================================
echo Install succeefully!
goto exit

if not errorlevel 0 echo Error "install-path" & goto exit

:help
echo nodins.bat install-path

:exit

[3]打開Windows命令行cmd.exe,切換 進(jìn)入D:\node-v0.10.5目錄。將文件nodins.bat拷貝到D:\node-v0.10.5中,在命令行執(zhí)行:nodins.bat D:\nodejs,則生成編譯C/C++擴(kuò)展的編譯環(huán)境(包括頭文件、庫(kù)和可執(zhí)行文件)D:\nodejs目錄,內(nèi)容如下:

[4]用Visual Studio 2010創(chuàng)建一個(gè)DLL工程空白工程hellonode放在D:\目錄下,新建項(xiàng)目—>win32控制臺(tái)程序,然后進(jìn)入如下頁(yè)面:

[5]創(chuàng)建一個(gè)C++文件如hellonode.cpp,代碼如下:

#define BUILDING_NODE_EXTENSION
#include <node.h>

using namespace v8;

Handle<Value> Hello(const Arguments& args) {
HandleScope scope;
return scope.Close(String::New("Hello world!"));
}

Handle<Value> Add(const Arguments& args) {
HandleScope scope;

if (args.Length() < 2) {
ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
return scope.Close(Undefined());
}

if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
ThrowException(Exception::TypeError(String::New("Wrong arguments")));
return scope.Close(Undefined());
}

Local<Number> num = Number::New(args[0]->NumberValue() +
args[1]->NumberValue());
return scope.Close(num);
}

void init(Handle<Object> target) {
NODE_SET_METHOD(target, "hello", Hello);
NODE_SET_METHOD(target, "add", Add);
}

NODE_MODULE(hellonode, init)

[6]在工程屬性的配置屬性-常規(guī)中將輸出目錄改為.\;

[7]在工程屬性的配置屬性-常規(guī)中將目標(biāo)文件擴(kuò)展名改為.node;

[8]在工程屬性的配置屬性-C/C++-常規(guī)-附加包含目錄添加頭文件目錄為:D:\nodejs\include

[9]在工程屬性的配置屬性-鏈接器-常規(guī)-附加庫(kù)目錄添加目錄:D:\nodejs\lib

[10]在工程屬性的配置屬性-鏈接器-輸入-附加依賴項(xiàng)添加lib庫(kù):node.lib

[11]編譯生成后在D:\hellonode\hellonode中生成一個(gè)文件hellonode.node;
[12]在D:\hellonode目錄創(chuàng)建js測(cè)試代碼test.js,代碼如下:
var addons = require('./hellonode');
console.log('C/C++ addons.hello() =', addons.hello());
console.log('C/C++ addons.add(200, 300) =', addons.add(200, 300));

[13]在命令行執(zhí)行node .\test.js(若未配置node.exe的路徑變量,則執(zhí)行:D:\nodejs\node .\test.js)



查看完整回答
反對(duì) 回復(fù) 2019-11-17
  • 3 回答
  • 0 關(guān)注
  • 590 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)