私は窓に取り組んでいます。underscorediscoveryの V8 を使用して、V8 でhello worldを実行しようとしています。これは行でコンパイルできませんでした
// Get the default Isolate created at startup.
Isolate* isolate = Isolate::GetCurrent();
underscorediscovery ヘッダーを調べたところ、このクラスがヘッダーにないときに、古いライブラリとヘッダーがありました。それは大丈夫でした。この行を削除し、最初の 4 行を次のように置き換えます。
// Create a stack-allocated handle scope.
HandleScope handle_scope;
// Create a new context.
Handle<Context> context = Context::New();
// Here's how you could create a Persistent handle to the context, if needed.
Persistent<Context> persistent_context(context);
そしてそれはうまくいきました。したがって、この Isolate は V8 に新しく追加されました。
次に、node.js をインストールしました。その依存関係の deps フォルダーにも v8 があります。私はnode.jsをビルドし、v8もビルドしました。nodejsのアドオン開発に関する指示に従いました。その「hello world nodejs」は成功しました。クラスIsolateがヘッダーにあるため、実際のGoogleコードも機能するはずだと思いました。しかし、エラーでコンパイルされていません:
error C2664: 'v8::HandleScope::HandleScope(const v8::HandleSc
ope &)' : cannot convert parameter 1 from 'v8::Isolate *' to 'const v8::HandleS
cope &' [C:\Users\asnegi\company\nodejs project\node-v0.10.15\src\my_files\buil
d\v8code.vcxproj]
Reason: cannot convert from 'v8::Isolate *' to 'const v8::HandleScope
'
No constructor could take the source type, or constructor overload re
solution was ambiguous
C:\Users\abc.node-gyp\0.10.15\deps\v8\include\v8.h のヘッダーを調べます
クラス Isolate が定義されています。また、
template <class T> class Handle {
public:
/**
* Creates an empty handle.
*/
inline Handle() : val_(0) {}
/**
* Creates a new handle for the specified value.
*/
inline explicit Handle(T* val) : val_(val) {}
...........
...........
と
class HandleScope {
public:
inline HandleScope();
explicit inline HandleScope(Isolate* isolate);
.....
したがって、Google の Hello world のこの部分は機能するはずです。
// Get the default Isolate created at startup.
Isolate* isolate = Isolate::GetCurrent();
// Create a stack-allocated handle scope.
HandleScope handle_scope(isolate);
// Create a new context.
Handle<Context> context = Context::New(isolate);
何が問題ですか ?