2016-07-29 1 views
0

Visual Studio 2015でC++およびC#コードを含むdllを使用してネイティブノード拡張を作成したいと思います。my own instructionsの後には動作しません。これは最新のnode-gypnode.jsにmixed C++&.Net dllを使用するには? (エラー:abort()が呼び出されました)

/clrオプションを使用しない場合は、次のようなプログラムを実行できます。

console.log("1"); 
const addon = require('./build/Release/addon'); 
console.log("2"); 

/clrを有効にすると、logの最初の呼び出しのみが実行されます。 /デバッグにこれを修正する方法

enter image description here

:デバッグモードでDLLをコンパイルすると、私は次のメッセージが表示されますか?

(私は縁があります知っているが、私はノード-GYPの道を行くことにしようとしています)

答えて

0

失敗したすべてをいじる後(?)VS2015でのコンパイラとリンカオプション、私は私のbinding.gypを設定する方法を発見代わりに、.NETは仕事を得るために:

{ 
    "targets": [ 
    { 
     "target_name": "addon", 
     "sources": [ "hello.cc" ], 
     "msbuild_settings": { 
     "ClCompile": { 
      "CompileAsManaged": "true", 
      "ExceptionHandling": "Async", 
     }, 
     }, 
    } 
    ] 
} 

私は正常にマネージコードとアンマネージコードの次のミックスを実行してビルドを検証:

#include <node.h> 
#include <v8.h> 

namespace demo { 

    #pragma managed 

    void callManaged() 
    { 
    System::String^ result = gcnew System::String("hola"); 
    System::Console::WriteLine("It works: " + result); 
    } 

    #pragma unmanaged 

    using v8::FunctionCallbackInfo; 
    using v8::Isolate; 
    using v8::Local; 
    using v8::Object; 
    using v8::String; 
    using v8::Value; 

    void Method(const FunctionCallbackInfo<Value>& args) { 
    Isolate* isolate = args.GetIsolate(); 
    callManaged(); 
    args.GetReturnValue().Set(String::NewFromUtf8(isolate, "woooooorld")); 
    } 

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

    NODE_MODULE(addon, init) 

} 
関連する問題