LINUX.ORG.RU

Вызов кода написанного на c++ с помошью js

 , ,


0

3

Можно ли использовать js как внешний скриптовый язык для приложения написанного на c++?
Например, я пишу что-то вроде

int main() {
printf(callJSfunction("main.js","main()"));
return 0;
}
Собираю, в файл main.js пишу
main = function() {
var a = "Hello ";
var b = "world!";
return a+b;
}
Запускаю, получаю
Hello world!

Ответ на: комментарий от BRE

А без QT можно? Не то, чтобы у меня тулкитофобия, просто из-за маленькой фичи не охота связываться с целым QT. Нет чего-нибудь простого и маленького?

crutch_master ★★★★★
() автор топика

Бери JS движок и прикручивай.

Но я рекомендую еще взглянуть на тему AngelScript. Он для как раз таких вещей.

a1batross ★★★★★
()
Ответ на: комментарий от Stil

На правах оффтопа, не более. Не привязывайся без поводу.

a1batross ★★★★★
()

Вызов кода написанного на c++ с помошью js

внешний скриптовый язык

а в примере ты вызываешь код на JS из C++. как бы, WTF?

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

для того, чтоб вызвать код с++ из JS нужно сначала запустить исполнитель JS, а потом из него уже дергать код C++. очевидно же.

anonymous
()
Ответ на: комментарий от jtootf

а в примере ты вызываешь код на JS из C++. как бы, WTF?

Ы. Нужно и так и так.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от chuppa

Да, я знаю про lua, но мне импонирует JSON. Я хочу, например, вешать обработчик некоторых событий в сами данные. Например:

clickLaunch = fucntion() {
   cppApp.launch();
};

{
  id : 412,
  type : "button",
  caption : "Launch",
  position : {x:15, y:150},
  onclick = clickLaunch()
}

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Я бы взял Qt для этого. Там очень просто воспользоваться JS-скриптованием. Я пробовал в одной своей программе.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Stil

Говорил :)

использовать js как внешний скриптовый язык для приложения написанного на c++

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от a1batross

Он не суперсет js — т.е. СБИШ, которые опу придется изучить :) Например, банальный возврат отрицательного числа из скриптовой функции через return внезапно превращается в 0, т.к. AS возвращает asQUAD, asWORD, asBYTE, которые все unsigned

        //angelscript.h
	// Return value
	virtual asBYTE  GetReturnByte() = 0;
	virtual asWORD  GetReturnWord() = 0;
	virtual asDWORD GetReturnDWord() = 0;
	virtual asQWORD GetReturnQWord() = 0;
	virtual float   GetReturnFloat() = 0;
	virtual double  GetReturnDouble() = 0;
	virtual void   *GetReturnAddress() = 0;
        //virtual asINT   GetReturnInt() = 0; где ?
        //virtual asINT64   GetReturnInt64() = 0; где ?
и т.д., а «встроенные» int, int64 нет :) Их надо мапить либо через out параметры, либо еще как — m_reg.valueRegister для них в asQWORD содержит 0 («ашипка») вместо хотябы чего-то что можно конвертнуть :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.