![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
рассмотрим самый простой пример
как мне вызвать этот код? из с++? т.е. я должен получить что то типа код C++
документацию пробовал читать, но что то там сложно и непонятно понадобится ли интерпретатор питона конечной программе? |
||||
|
|||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
разумеется. это тут не при чем. boost.python делает обратное. т.е. код написанный на С/С++ позволяет использовать в пайтон. читай это: http://docs.python.org/extending/embedding.html ну мегапростое решение.
Это сообщение отредактировал(а) boostcoder - 27.4.2012, 13:50 |
||||
|
|||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну я про что то типа py2exe, т.е. не надо ставить интерпретатор на другой машине, где потом будет запускаться программа. т.е. что я примерно хочу это взять и каким либо образом запаковать мои .py файлы и нужное для них из интерпретатора в .lib и затем в мою с++ программу только подключить либу и заголовок с описанием класса с функциями или просто функций. и потом из кода вызывать примерно так
ну или без класса, а просто функцию вызвать.
ну так и что будет являться результатом этой операции? мне то надо, как я писал выше, аргументы передать в с++ функцию и результат из неё получить, а тут как я понял просто строка интерпретатору отсылается на выполнение? Это сообщение отредактировал(а) mrgloom - 27.4.2012, 14:13 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ссылку читай. там показано как из плюсов передавать аргументы в пайтон, и получать результаты обратно.
|
|||
|
||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
да, понял. секция 5.3.
хмм получается что для каждого типа возвращаемого значения надо будет написать свою функцию? call_python_func(char* module,char* func_name) или можно как то на месте узнавать тип возвращаемого значения? да и буст похоже умеет это делать в обе стороны http://stackoverflow.com/questions/215752/...ata-back-to-cpp пытаюсь переписать с примера, но непонятно как передаются параметры просто в строке через пробел?
вот нашел еще пример, но тут опять же никаких значений не передается и не возвращается.
|
||||
|
|||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
вроде разобрался, но все равно не работает.
на питоне файл
пишет что не может найти myadd |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
покажи какое именно сообщение пишет. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Еще вот что заметил
это не правильно Если вы хотите передать 2 дабла, то
Добавлено через 5 минут и 4 секунды http://docs.python.org/release/1.5.2/ext/buildValue.html |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
да спасибо, так работает, протестировал пока правда только на простой функции, а не на реальных файлах.
но все таки придется писать для каждого типа возвращаемого значения свою функцию? и еще вопрос о прикручивании питона внутрь, наивным методом пока остановился вот на чем. если собрать .exe с вышеобозначенным кодом и перенести на другой компьютер, то пишет python.dll не найден, ну доложил в папку dll и теперь пишет ImportError: No module named site. дальше пока не знаю что делать. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
потому что интерпретатор должен знать где лежит директория lib с библиотеками пайтона. по умолчанию, он ищет ее в той же директории где лежит python.dll. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
скопировал папку Lib, где находятся все .py теперь всё работает, я так понимаю что мне достаточно оставить в папке только те .py файлы которые вызывает моя программа?
и еще вопрос запаковать в .exe сразу это все сразу нельзя? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
а как быть, если у меня класс и надо обратится к методу класса? (в примере myadd3)
Это сообщение отредактировал(а) mrgloom - 28.4.2012, 12:24 |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
хмм но теоретически даже если не получится вызывать метод класса, то наверно можно все self переменные сделать глобальными класс убрать и просто сделать список функций или я не вижу каких то подводных камней?
Это сообщение отредактировал(а) mrgloom - 28.4.2012, 13:03 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |