Kito87 Ответов: 1

Как использовать 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-файлах. Спасибо за ваш ответ.

1 Ответов

Рейтинг:
5

KarstenK

Вы должны сделать запись в параметры проекта. Это вкладка компоновщика с полем для использования библиотек. Они должны каким-то образом находиться в пути поиска проекта или использовать запись для каталога.

Это также может быть проблема пространства имен, но для этого вы должны обратиться к документации Google.


Kito87

Я проверяю настройки каталога свойств проекта. Похоже, никаких проблем нет.