Необходимо интегрировать 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++ приложения.
Если кто-нибудь делал что-либо подобное, буду рад услышать как это можно сделать.
Спасибо
Здравствуйте, 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 из с++
Здравствуйте, 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.
Здравствуйте, burkav, Вы писали:
B>Необходимо интегрировать ObjectiveC/Python/Ruby код в C++ приложение. Кто-нибудь сталкивался с этим раньше ? Не знаю с чего начать:
Если можешь сделать наоборот то есть оформить C++ часть в виде библиотеки, то поможет
http://www.swig.org/
Здравствуйте, 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, ни питон, ни руби.