>웹 프론트엔드 >JS 튜토리얼 >C를 사용하여 node.js_node.js용 확장 모듈 작성

C를 사용하여 node.js_node.js용 확장 모듈 작성

WBOY
WBOY원래의
2016-05-16 16:02:451164검색

전제 조건: node.js, Python2.7 및 Visual Studio 2013을 설치합니다.

과정:
먼저 GYP 프로젝트 생성 도구인 npm install -g node-gyp를 설치합니다.
작업 디렉터리인 테스트 디렉터리를 만듭니다. 이 디렉터리 아래에 C 소스 코드를 저장하기 위해 바인딩.gyp라는 새 텍스트 파일을 만듭니다.

코드 복사 코드는 다음과 같습니다.

{
'대상':[{
         'target_name':'안녕하세요',
        '소스':['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 구성 명령을 실행하세요
올바르게 실행되면 ----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"를 읽고 일부 웹 페이지를 참고하여 책에 있는 'libraries'에 조건 항목이 있습니다. lnode.lib'], 이 문장 때문에 컴파일할 때 can't open node.lib라는 오류가 계속 발생했습니다. 분명히 파일이 존재했지만 많은 정보를 검색했지만 해결되지 않았습니다. 그런 다음 node.lib를 직접 복사하여 작업 디렉터리로 이동하고 명령줄을 사용하여 성공적으로 컴파일했습니다. 하지만 vs2013에서는 여전히 오류가 발생했습니다. 제가 옳다고 생각한 것은 아무것도 없습니다. 마침내 공식 웹사이트에 가서 이 매개변수를 제공하는 예제가 하나도 없다는 것을 발견했습니다. 그래서 삭제하려고 했더니 모든 것이 정상이었습니다. 사랑하는 신들이여, 누가 정확한 설명을 할 수 있습니까? !

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.