2016-04-06 20 views
2

私は別の投稿を行った&それらのほとんどは、私が試したnpmを再構築/再インストールすることを提案しています。私はC++でのNode.jsの例をしようとしているノードJS - モジュールは自己登録していません

、以下のファイルの詳細は、今すぐ来て
TestNode.cpp

#include<iostream> 
class TestNode { 
public: 
    void printHelloW() { 
     std::cout << "Hello World!!!"; 
    } 
}; 


binding.gyp

{ 
    "targets": [ 
    { 
     "target_name": "newexample", 
     "sources": [ "TestNode.cpp" ] 
    } 
    ] 
} 

です実行&モジュールが自己登録されていないというエラーをスローします。

D:\newexample>node-gyp configure 
gyp info it worked if it ends with ok 
gyp info using [email protected] 
gyp info using [email protected] | win32 | x64 
gyp info spawn C:\Python27\python.exe 
gyp info spawn args [ 'C:\\Users\\rtv\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py', 
gyp info spawn args 'binding.gyp', 
gyp info spawn args '-f', 
gyp info spawn args 'msvs', 
gyp info spawn args '-G', 
gyp info spawn args 'msvs_version=auto', 
gyp info spawn args '-I', 
gyp info spawn args 'D:\\newexample\\build\\config.gypi', 
gyp info spawn args '-I', 
gyp info spawn args 'C:\\Users\\rtv\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi', 
gyp info spawn args '-I', 
gyp info spawn args 'C:\\Users\\rtv\\.node-gyp\\5.10.0\\include\\node\\common.gypi', 
gyp info spawn args '-Dlibrary=shared_library', 
gyp info spawn args '-Dvisibility=default', 
gyp info spawn args '-Dnode_root_dir=C:\\Users\\rtv\\.node-gyp\\5.10.0', 
gyp info spawn args '-Dnode_gyp_dir=C:\\Users\\rtv\\AppData\\Roaming\\npm\\node_modules\\node-gyp', 
gyp info spawn args '-Dnode_lib_file=node.lib', 
gyp info spawn args '-Dmodule_root_dir=D:\\newexample', 
gyp info spawn args '--depth=.', 
gyp info spawn args '--no-parallel', 
gyp info spawn args '--generator-output', 
gyp info spawn args 'D:\\newexample\\build', 
gyp info spawn args '-Goutput_dir=.' ] 
gyp info ok 

D:\newexample>node-gyp build 
gyp info it worked if it ends with ok 
gyp info using [email protected] 
gyp info using [email protected] | win32 | x64 
gyp info spawn C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe 
gyp info spawn args [ 'build/binding.sln', 
gyp info spawn args '/clp:Verbosity=minimal', 
gyp info spawn args '/nologo', 
gyp info spawn args '/p:Configuration=Release;Platform=x64' ] 
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. 
    TestNode.cpp 
    win_delay_load_hook.c 
    Generating code 
    Finished generating code 
    newexample.vcxproj -> D:\newexample\build\Release\\newexample.node 
gyp info ok 

D:\newexample>node 
> var obj=require("./build/Release/newexample") 
Error: Module did not self-register. 
    at Error (native) 
    at Object.Module._extensions..node (module.js:440:18) 
    at Module.load (module.js:357:32) 
    at Function.Module._load (module.js:314:12) 
    at Module.require (module.js:367:17) 
    at require (internal/module.js:16:19) 
    at repl:1:9 
    at REPLServer.defaultEval (repl.js:269:27) 
    at bound (domain.js:287:14) 
    at REPLServer.runBound [as eval] (domain.js:300:12) 
> 

バージョン情報

D:\newexample>node -v 
v5.10.0 

D:\newexample>npm -v 
3.8.3 

D:\newexample>node-gyp -v 
v3.3.1 

OS: Windows 7 Professional 64-bit 

は、このエラーを解決するには、私を導くためにあなたを要求します。

+0

問題を解決しましたか?はいと答えた場合は、私も同じ問題に直面しているので、答えを投稿してください。 – user3182143

答えて

1

node.js addonを書くのはそれほど単純ではありません。明示的に関数をエクスポートし、適切なマクロを呼び出してアドオンをノードのモジュールシステムに登録する必要があります。詳しくは、Addons documentationを参照してください。

0

node-gypを使用してNode.jsのアドオンを開発するのは少し難解です。 .cppファイルは、Node.js環境で動作するように非常に調整する必要があります。

最初の「Hello World」の例から始めることをお勧めします。Node.js C/C++ Addons Documentation

ここには、.ccpファイルに欠けているもののリスト(非網羅的)があります。

Node.jsのC++ライブラリ

#include <node.h> 

Node.js.にメソッドを公開する関数initのにここでは、Javascriptでaddon.hello()を呼び出すとC++でMethod関数が呼び出されることがわかります(ここには表示されていません)。

void init(Local<Object> exports) { 
    NODE_SET_METHOD(exports, "hello", Method); 
} 

アドオン名とinit関数(上記)を定義するNODE_MODULE呼び出しです。この関数の最初のパラメータ(現在はaddon)はbinding.gypファイルの"target_name"の値と一致する必要があります。あなたの場合、newexample

NODE_MODULE(addon, init) 
+0

ここに参考文献の完全な例があります。https://blog.scottfrees.com/building-an-asynchronous-c-addon-for-node-js-using-nan – stanleyxu2005

関連する問題