Objective C, Python и Ruby код внутри C++ приложения
От: burkav  
Дата: 05.06.08 09:51
Оценка:
Необходимо интегрировать ObjectiveC/Python/Ruby код в C++ приложение. Кто-нибудь сталкивался с этим раньше ? Не знаю с чего начать:
a) Использовать ключевые слова C++ наподобие "extern C" и вставить таким образом исходный код ? Как в таком случае обращаться к этим объектам ?
b) Использовать некоторый wrapper — C++ класс который содержит ObjectiveC/Python/Ruby код ?
c) Собрать ObjectiveC/Python/Ruby приложение в библиотеку и потом использовать некоторые директивы компилятора C++ и таким образом встроить код ? Как тогда использовать заголовочные файлы ?

P.S. Конечная цель это использование Apple Script кода в C++ приложении. Так как Apple Script работает с ObjectiveC/Python/Ruby (http://www.apple.com/applescript/features/scriptingbridge.html), идея в том чтобы вызвать Apple Script объект из ObjectiveC/Python/Ruby а затем вызвать ObjectiveC/Python/Ruby код из C++ приложения.

Если кто-нибудь делал что-либо подобное, буду рад услышать как это можно сделать.
Спасибо
Re: Objective C, Python и Ruby код внутри C++ приложения
От: zaufi Земля  
Дата: 05.06.08 12:50
Оценка:
Здравствуйте, burkav, Вы писали:

B>Необходимо интегрировать ObjectiveC/Python/Ruby код в C++ приложение. Кто-нибудь сталкивался с этим раньше ? Не знаю с чего начать:

B>a) Использовать ключевые слова C++ наподобие "extern C" и вставить таким образом исходный код ? Как в таком случае обращаться к этим объектам ?
B>b) Использовать некоторый wrapper — C++ класс который содержит ObjectiveC/Python/Ruby код ?
B>c) Собрать ObjectiveC/Python/Ruby приложение в библиотеку и потом использовать некоторые директивы компилятора C++ и таким образом встроить код ? Как тогда использовать заголовочные файлы ?

B>P.S. Конечная цель это использование Apple Script кода в C++ приложении. Так как Apple Script работает с ObjectiveC/Python/Ruby (http://www.apple.com/applescript/features/scriptingbridge.html), идея в том чтобы вызвать Apple Script объект из ObjectiveC/Python/Ruby а затем вызвать ObjectiveC/Python/Ruby код из C++ приложения.


B>Если кто-нибудь делал что-либо подобное, буду рад услышать как это можно сделать.

B>Спасибо

Взгляни на boost.Python.
Позволяет обращаться к объектам c++ из питоновских скриптов и наоборот вызывать pyhton из с++
Re: Objective C, Python и Ruby код внутри C++ приложения
От: Pasternak  
Дата: 05.06.08 15:46
Оценка:
Здравствуйте, burkav, Вы писали:

B>P.S. Конечная цель это использование Apple Script кода в C++ приложении. Так как Apple Script работает с ObjectiveC/Python/Ruby (http://www.apple.com/applescript/features/scriptingbridge.html), идея в том чтобы вызвать Apple Script объект из ObjectiveC/Python/Ruby а затем вызвать ObjectiveC/Python/Ruby код из C++ приложения.


B>Если кто-нибудь делал что-либо подобное, буду рад услышать как это можно сделать.


Сам не пробовал, но в справке по Питону (5. Embedding Python in Another Application) всё выглядит достаточно просто:

#include <Python.h>

int main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}


В, если я всё правильно понял, то достаточно в функцию PyRun_SimpleString передать Питоновский код вызывающий Apple Script.
Re: Objective C, Python и Ruby код внутри C++ приложения
От: FR  
Дата: 06.06.08 03:02
Оценка:
Здравствуйте, burkav, Вы писали:

B>Необходимо интегрировать ObjectiveC/Python/Ruby код в C++ приложение. Кто-нибудь сталкивался с этим раньше ? Не знаю с чего начать:


Если можешь сделать наоборот то есть оформить C++ часть в виде библиотеки, то поможет http://www.swig.org/
Re: Objective C, Python и Ruby код внутри C++ приложения
От: Кодёнок  
Дата: 06.06.08 10:01
Оценка:
Здравствуйте, burkav, Вы писали:

B>P.S. Конечная цель это использование Apple Script кода в C++ приложении. Так как Apple Script работает с ObjectiveC/Python/Ruby (http://www.apple.com/applescript/features/scriptingbridge.html), идея в том чтобы вызвать Apple Script объект из ObjectiveC/Python/Ruby а затем вызвать ObjectiveC/Python/Ruby код из C++ приложения.


Предназначение AppleScript — посылать сообщения приложениям на Obj-C простым скриптом. Python/Ruby это просто альтернативы. AppleScript не создает объектов которые ты бы вызывал, это он сам работает с объектами созданными с помощью Obj-C. Почитай в доке по как устроен Obj-C runtime. Если в кратце, то посылка сообщения происходит вызовом C-функции типа objc_msgsend(...), плюс есть пачка функций для работы с типами и пр.

Определись что тебе нужно, если выполнять apple script, то это одно, если автоматизировать свое С++ приложение с помощью него, это другое, или что-то третье? Если тебе надо просто управлять приложением на Obj-C из C/C++ — тебе вообще не нужен ни applescript, ни питон, ни руби.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.