Rumah  >  Artikel  >  hujung hadapan web  >  Gunakan C untuk menulis modul sambungan untuk node.js_node.js

Gunakan C untuk menulis modul sambungan untuk node.js_node.js

WBOY
WBOYasal
2016-05-16 16:02:451147semak imbas

Prasyarat: Pasang node.js, Python2.7 dan visual studio 2013.

Proses:
Mula-mula pasang alat penjanaan projek GYP, npm install -g node-gyp.
Cipta direktori ujian, yang merupakan direktori kerja kami Cipta direktori src di bawah direktori ini untuk menyimpan kod sumber C. Cipta fail teks baharu bernama binding.gyp Ini ialah fail projek gyp >

Salin kod Kod adalah seperti berikut:
{
'sasaran':[{
         'target_name':'hello',
        'sumber':['src/hello.cc']
}]
}

Tulis hello.cc mudah lain dengan kandungan berikut:


#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)

Kemudian jalankan arahan: node-gyp configure

Jika ia berjalan dengan betul, direktori ----build akan muncul, di mana fail projek vs2013 akan dijana untuk anda, supaya anda boleh mengedit dan menyusun dalam vs2013.
Sudah tentu, anda juga boleh terus menggunakan binaan nod-gyp arahan untuk menyusun.

Program test js adalah seperti berikut:

Salin kod Kod adalah seperti berikut:
var hello = memerlukan('./hello');
console.log(hello.hello());

Beberapa masalah telah dihadapi, rekod adalah seperti berikut:

1. C:UsersAdministrator.node-gyp

2. Helo dalam NODE_MODULE(hello, init) ialah nama modul dan perlu konsisten dengan nama fail Jika tidak, tidak akan ada masalah dalam penyusunan tetapi ralat akan berlaku semasa masa jalan. Kerana apabila memerlukan('./hello.node'), ia bukan sahaja mencari fail yang sepadan, tetapi juga sepadan dengan modul yang sepadan.

3. Saya mengikuti buku Pu Ling "Node.js in a Simple Language" dan merujuk kepada beberapa halaman web untuk mengkaji Terdapat item syarat dalam fail projek gyp yang diberikan dalam buku, 'libraries': ['-. lnode.lib'], kerana ayat ini, saya terus mendapat ralat semasa menyusun: tidak dapat membuka node.lib Jelas sekali fail itu wujud, tetapi ia hanya melaporkan ralat saya mencari banyak maklumat tetapi tidak dapat diselesaikan itu. Kemudian saya menyalin node.lib secara langsung Pergi ke direktori kerja dan gunakan baris arahan untuk berjaya menyusun. Tetapi pada vs2013, ralatnya masih sama. Akhirnya, saya pergi ke laman web rasmi dan mendapati tiada satu pun contoh yang menyediakan parameter ini, dan semuanya OK. Tuhan yang dikasihi, siapa yang boleh memberikan penjelasan yang betul? !

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn