2012-10-29 30 views
5

Sürüm modunda VS2010'da kullanmak için JS V8'i indirip yükledim. Şimdi Hello World example çalıştırmak deneyin:"Merhaba Dünya" + JS V8 + VS2010

#include "v8.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    v8::HandleScope handle_scope; 

    v8::Persistent<v8::Context> context = v8::Context::New(); 

    v8::Context::Scope context_scope(context); 

    v8::Handle<v8::String> source = v8::String::New("'Hello' + ', World'"); 

    v8::Handle<v8::Script> script = v8::Script::Compile(source); 

    v8::Handle<v8::Value> result = script->Run(); 

    context.Dispose(); 

    v8::String::AsciiValue ascii (result); 

    printf ("%s\n", *ascii); 

    return 0; 
} 

ekledim Ek bağımlılıklar:

1>------ Build started: Project: V8_example, Configuration: Release Win32 ------ 
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 
1>v8_base.lib(platform-win32.obj) : error LNK2001: unresolved external symbol [email protected] 
... 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

I:

"C:\v8\build\Release\lib\preparser_lib.lib" 
"C:\v8\build\Release\lib\v8_base.lib" 

ben derlemek ve program çalıştırmayı deneyin, bir bağlama hatayla karşılaştı "Tüm Varsayılan Kitaplıkları Yoksay: Evet (/ NODEFAULTLIB)" ayarladı, bu hatalar ortaya çıktı:

1>------ Build started: Project: V8_example, Configuration: Release Win32 ------ 
1>v8_base.lib(strtod.obj) : error LNK2001: unresolved external symbol @[email protected] 
1>v8_base.lib(full-codegen-ia32.obj) : error LNK2001: unresolved external symbol @[email protected] 
... 
1>c:\users\admin\documents\visual studio 2010\Projects\V8_example\Release\V8_example.exe : fatal error LNK1120: 141 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Bu örneği çalıştırmayı deneyen veya bu hataları nasıl düzelteceğinizi bilen biri var mı?

cevap

1

Hata, Ws2_32.lib adresinde bulunan [email protected] eksik sembolünden kaynaklanmaktadır.

Özellikler -> Bağlayıcı -> Giriş -> Ek Bağımlılıklar projesine gidin. Basitçe Ws2_32.lib'u ekleyin ve işiniz bitti.

+0

28: altında azaltılan hataların sayısı 1> LINK: LNK4098 uyarısı: defaultlib 'LIBCMT' diğer lib'lerin kullanımıyla çakışıyor; Kullanım/NODEFAULTLIB: Kütüphane 1> v8_base.lib (platforma win32.obj): LNK2001: hata LNK2001: çözülmemiş dış simge __imp__timeGetTime 0 1> v8_base.lib @ çözülmemiş bir dış simge "Özel: Statik int const v8: : iç :: Snapshot :: cell_space_used_ "(? cell_space_used_ @ Snapshot @ internal @ v8 @@ 0HB) ... –

0

Sadece bu tek kitaplığı hariç tutmak için /NODEFAULTLIB:LIBCMT nasıl? v8_base.lib;v8_snapshot.lib;ws2_32.lib;winmm.lib

/NODEFAULTLIB:LIBCMT bu DEFINE YAPMAYIN: Aşağıdaki kütüphaneleri dahil etmek zorunda da sana v8_snapshot.lib bağlamak veya v8_nosnapshot.lib gerektiğine inanıyorum yoksa

1

v8.lib için kütüphane ve bağlantı paylaştı inşa etmek yapmamın başarısız olmasına neden oldu.

Nasıl öğrendiğimi merak ediyorsanız, GYP tarafından oluşturulan ALL.sln altına baktım ve shell hedefini işaretledim. Bir noktada v8_base ile bağlantı kurmak zorunda olan bir yürütülebilir, bu yüzden gerekli Linker seçeneklerine sahip. Ancak, bulmak biraz zordu.