Команда (фрилансеры)

Набираем команду фрилансеров, Вы:

  • Программист,
  • Дизайнер,
  • SEO-специалист,
  • Менеджер

Разработка на заказ

Наша команда фрилансеров выполнит
работы на заказ:

Создание и раскрутка сайтов
Разработка приложений (мобайл, десктоп, сервер)
Разработка игр (веб, мобайл, 3D)
Аутсорсинг, фриланс

Контакты
vk.com/sitev_ru
Skype: sitev.ru
E-mail: mike@sitev.ru
github.com/sitev

Рейтинг@Mail.ru

Besucherzahler
счетчик посещений
Сайт на C++
Наш сайт работает на C++ и это очень круто! =))

AngelScript

Что такое AngelScript? Это интерпретируемый язык программирования для использования в качестве скриптового языка в своих приложениях.

Программа «Hello, world» на этом языке выглядит так:

void main()
{
	print("Hello, world!\n");
}

Очень сильно напоминает язык Си. Научимся использовать AngelScript в своих проектах.

Установка AngelScript

По своей сути, AngelScript является библиотекой скриптов и не позволяет скриптам выполняться самим по себе. А раз он является библиотекой, качаем архив со странички http://www.angelcode.com/angelscript/downloads.html и распаковываем в папку C:\projects\lib. Путь должен выглядеть примерно так: C:\projects\lib\angelscript\sdk.

Теперь сам AngelScript необходимо скомпилировать. Заходим в папку C:\projects\lib\angelscript\sdk\angelscript\projects и находим проект под соответствующую IDE. Я использую Visual Studio. После компиляции в папке C:\projects\lib\angelscript\sdk\angelscript\lib должен появиться файл angelscriptd.lib.

Создаём консольное приложение в Visual Studio и вставляем следующий код:

#include <angelscript.h>
#include <scriptstdstring/scriptstdstring.h>
#include <scriptbuilder/scriptbuilder.h>

#pragma comment (lib, "angelscriptd.lib")

int main()
{
	// Создаём объект движка скрипта
	asIScriptEngine *engine = asCreateScriptEngine();

    return 0;
}

В настройках проекта для инклудов прописываем пути:

C:\projects\lib\angelscript\sdk\angelscript\include;C:\projects\lib\angelscript\sdk\add_on;

для библиотек:

C:\projects\lib\angelscript\sdk\angelscript\lib

Компилируем. Если всё ОК, установка на этом завершена.

Используем свой враппер AS_WRAP

Функции API для встраивания AngelScript в программу на C++ слишком сложные, не прозрачные. Поэтому пришлось написать для этого дела свой враппер AS_WRAP. Работать с моим враппером очень просто (исходники на гитхабе: as_wrap).

	AngelScript as;

	as.regCppFunc("void print(const string &in)", asFUNCTION(print), asCALL_CDECL);
	AngelScriptModule *mod = as.newModule("test_module", "test.as");
	AngelScriptFunc *func = mod->getFunc("void main()");
	as.exec(func);

Рассмотрим как работает этот код.

Класс AngelScript содержит метод regCppFunc, которым регистрируем свою С++ функцию для последующего вызова её из AngelScript. Далее создаём модуль "test_module" из файла "test.as" с AngelScript скриптом, с помощью получаем из этого модуля функцию и выполняем её.

Как Вы уже поняли, нужно прописать в С++ коде фукнцию print:

void print(const string &s) {
	cout << s;
}

а также создать в папке проекта файл test.as со следующим кодом:

void main() {
	print("Hello, world!\n");
}

Запускаем - работает!

Мне понравилось использовать AngelScript, но есть и существенные минусы: сложность встраивания в С++ и у AngelScript практически нет сообщества.


Отправить комментарий
Наш проект: язык Cj
Cj - язык программирования (C++ & Javascript)
Новый язык программирования, для разработки веб, мобайл, десктоп-приложений, игр... подробнее...

Хотите поддержать проект?

  • Оставляйте ссылки на наш сайт
  • Станьте спонсором проекта
подробнее...

Концепция SITEV.ru

SITEV.ru - это социальная сеть для ИТ-специалистов (программистов, дизайнеров, seo-специалистов, рекламных менеджеров, маркетологов), в том числе фрилансеров, бизнесменов... а также обычных пользователей, для которых и делается ИТ