Как использовать V8 Google в приложении C ++?
Я использовал GYP источник V8 Google, чтобы построить и скомпилировать в конце концов.sln сгенерировал динамическую библиотеку, чтобы сгенерировать lib-файл в режиме отладки и выпуска. (Я использовал версию V8 source 5.4.0 от Google.)
Я просто использую v8, и он выводит значение запуска javascript.
Я создал новый проект консоли приложений win32 в visual studio 2015, когда вы пытаетесь использовать V8 Google.
Что я знаю, достаточно, чтобы использовать двигатель V8.lib-файл и v8_base.lib-файлы и v8_nosnapshot.файл lib.
1. я был сгенерирован v8_base_0.lib, v8_base_1.lib, v8_base_2.lib, v8_base_3.lib. Использую ли я то, что v8_base.lib?
2. Мне нужен другой файл lib?
И я был использован как целая копия каталога include для того, чтобы использовать файл h. Я также скопировал dll-файл(icu18n.dll, icuuc.dll, v8.dll).
Я был использован для копирования hello-world.cc источник в файле. cpp.
Однако при компиляции исходного кода приложения c ++ возникает ошибка.
1>----- Build started: Project: v8Application2, Configuration: Debug Win32 ----- 1> v8Application2.cpp 1>v8Application2.obj : error LNK2019: unresolved external symbol _main referenced in function"class v8::Platform * __cdecl v8::platform::CreateDefaultPlatform(int)" (?CreateDefaultPlatform@platform@v8@@YAPAVPlatform@2@H@Z) 1>c:\users\kito\documents\visual studio 2015\Projects\v8Application2\Debug\v8Application2.exe : fatal error LNK1120: 1 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
3. как мне решить эту проблему?
Я был загрузки .с расширением vcxproj и .cpp-файлов из приложений c++. Пожалуйста, проверьте файл проекта visual studio 2015 'c++ win32 application console' .
И СМ. также мой другой вопрос Ссылка.
Я потратил на это три недели. Не идущий прогресс вообще застрял здесь.
Мне нужна помощь в том, что вы в чем-то не правы. Или спросите соответствующую ссылку, которая соответствует этому.
Это основной источник программы.
Мне пришлось скопировать основной источник из источника примера.
Я не являюсь частью изменения отдельно.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "include/libplatform/libplatform.h" #include "include/v8.h" using namespace v8; int main(int argc, char* argv[]) { V8::InitializeICUDefaultLocation(argv[0]); V8::InitializeExternalStartupData(argv[0]); Platform* platform = platform::CreateDefaultPlatform(); V8::InitializePlatform(platform); V8::Initialize(); // Create a new Isolate and make it the current one. Isolate::CreateParams create_params; create_params.array_buffer_allocator = v8::ArrayBuffer::Allocator::NewDefaultAllocator(); Isolate* isolate = Isolate::New(create_params); { Isolate::Scope isolate_scope(isolate); // Create a stack-allocated handle scope. HandleScope handle_scope(isolate); // Create a new context. Local<Context> context = Context::New(isolate); // Enter the context for compiling and running the hello world script. Context::Scope context_scope(context); // Create a string containing the JavaScript source code. Local<String> source = String::NewFromUtf8(isolate, "'test' + ', test2!'", NewStringType::kNormal).ToLocalChecked(); // Compile the source code. Local<Script> script = Script::Compile(context, source).ToLocalChecked(); // Run the script to get the result. Local<Value> result = script->Run(context).ToLocalChecked(); // Convert the result to an UTF8 string and print it. String::Utf8Value utf8(result); printf("%s\n", *utf8); } // Dispose the isolate and tear down V8. isolate->Dispose(); V8::Dispose(); V8::ShutdownPlatform(); //delete platform; delete create_params.array_buffer_allocator; return 0; }
Что я уже пробовал:
1. Файл "СЛН", повторно генерировать другие варианты.
2. demangling.
3. Добавьте и удалите "lib-файл".
Richard MacCutchan
У вас нет main
метод в вашем исходном файле(файлах).
Kito87
Я опубликовал основной код задержки.
Kito87
Существует общее решение для файла ссылки. Существует "основная функция" в " Application2.cpp - в этом.
Я должен идти домой, потому что это снаружи. спасибо.
Richard MacCutchan
В вашем коде нет ничего явно неправильного, вы все еще получаете ту же ошибку? Возможно, вам нужно вернуться к документации V8 и проверить, что нужно сделать.
Kito87
Кажется, теперь я знаю, в чем дело. Is в текущем тесте смотрит на то, какие вещи отсутствуют в некоторых lib-файлах. Спасибо за ваш ответ.