ホームページ > ウェブフロントエンド > jsチュートリアル > C を使用して、node.js_node.js の拡張モジュールを作成します

C を使用して、node.js_node.js の拡張モジュールを作成します

WBOY
リリース: 2016-05-16 16:02:45
オリジナル
1163 人が閲覧しました

前提条件:node.js、Python2.7、および Visual Studio 2013 をインストールします。

プロセス:
まず、GYP プロジェクト生成ツール npm install -g node-gyp をインストールします。
作業ディレクトリである test ディレクトリを作成します。このディレクトリの下に C ソース コードを保存するための src ディレクトリを作成します。これは、gyp プロジェクト ファイルです。 >

コードをコピーします コードは次のとおりです:
{
'ターゲット':[{
'target_name':'hello',
'ソース':['src/hello.cc']
}]
}

次の内容で別の簡単な hello.cc を作成します:


#include <node.h>
using namespace v8;

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

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

NODE_MODULE(hello, init)

ログイン後にコピー
次に、次のコマンドを実行します:node-gyp configure

正しく実行されると、ディレクトリ ----build が表示され、その下に vs2013 プロジェクト ファイルが生成され、vs2013 で編集およびコンパイルできるようになります。
もちろん、node-gyp build コマンドを直接使用してコンパイルすることもできます。

テスト js プログラムは次のとおりです:

コードをコピーします コードは次のとおりです:
var hello = require('./hello');
console.log(hello.hello());

いくつかの問題が発生しました。記録は次のとおりです:

1.C:UsersAdministrator.node-gyp

2. NODE_MODULE(hello, init) の hello はモジュール名であり、ファイル名と一致している必要があります。そうしないと、コンパイル時に問題は発生しませんが、実行時にエラーが発生します。 require('./hello.node') の場合、対応するファイルを見つけるだけでなく、対応するモジュールとも一致するためです。

3. Pu Ling の書籍「Node.js in a Simple Language」に従って、いくつかの Web ページを参照して学習しました。この書籍に記載されている gyp プロジェクト ファイルには、['-] という条件項目があります。 lnode.lib']、この文のせいで、コンパイル時にエラーが発生し続けました:node.libを開くことができません明らかにファイルは存在していましたが、多くの情報を検索しましたが解決できませんでした。次に、node.lib を直接コピーして、作業ディレクトリに移動し、コマンドラインを使用して正常にコンパイルしました。しかし、vs2013 でもエラーは同じでした。最終的に公式 Web サイトにアクセスしたところ、このパラメーターが提供されていないことがわかりました。そこで、削除してみました。すべて問題ありませんでした。親愛なる神々よ、誰が正確に説明できるでしょうか? !

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート