Latest posts on Использование языка Python в С/С++, простой пример topichttp://python.su/forum/topic/926/2011-06-22T12:46:05+03:00Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-22T12:46:05+03:00Андрей Светлов73661Сочувствую. Настройки компилятора/линкера проверьте. Собиралось без проблем, насколько помню.<br/>Проект выбирать мультипоточный с динамическим рантаймом — и на этом все.
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-22T11:51:26+03:00Aldegid73656Добился-то добился, да не всего. На одном форуме прочитал, что Python/C API не предоставляет возможность вызывать методы объектов C++ из Python, что меня несказанно огорчило. Поэтому я пошел искать другие решения. <br/><br/>Посмотрел Boost.Python - огромная, сложная хреновина, которую мне еле-еле удалось сбилдить. На данный момент застопорился на сборке модуля расширения. Linker не может найти одну функцию, которая явно присутствует в библиотеках, которые я явно подключаю. Подробности здесь <a href="http://www.gamedev.ru/code/forum/?id=79506&page=2#m27">http://www.gamedev.ru/code/forum/?id=79506&page=2#m27</a><br/><br/>Посмотрел pybind. Сбилдился слава Богу почти сразу, но… ни одной строки документации и даже комментариев в коде… беда
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-21T03:08:35+03:00Aldegid73583С большими мучениями кое-как добился вызова функции Python из C и вызова из первой обратно в то же C приложение!!! Безо всяких boost, cpython и прочих. Только с помощью API. Все работает, ура!!! <br/>Копаем дальше… :)))
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-14T11:29:24+03:00Андрей Светлов73310SWIG — это ночной кошмар<br/><br/>Не нужно писать “программу на С, которая вызывает питоновские функции”.<br/>Нужно писать модуль, который управляется Питоном. Так проще и удобней, поверьте.
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-14T11:01:06+03:00Aldegid733092<strong>Андрей Светлов</strong><br/>Я понял, значит мне нужен и extending и embedding.<br/><br/>Хочу на C++ писать программу, которая для исполнения некоторых функций использует Python, модули на котором в свою очередь используют объекты того самого экземпляра программы на C++, из которого были вызваны. Скажите, это можно реализовать? Если да, то как?<br/><br/>2<strong>Rodegast</strong><br/>SWIG? Понял. Но там только в одну сторону. А Boost вроде в обе. Хотя мне пока не удается побеждать Boost. Вообще что лучше SWIG или Boost?
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-14T00:16:44+03:00Rodegast73302<a href="http://a-iv.ru/pyart/cpp2py.pdf">http://a-iv.ru/pyart/cpp2py.pdf</a>
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-13T14:09:14+03:00Андрей Светлов73279Ноль — нельзя вообще. Версия питона какая?<br/>extending — написание модулей-расширений на всяких разных языках.<br/>embedding — встраивание питона в другие процессы.<br/>extending гораздо проще и удобней, при этом замечательно подходит почти для всех случаев (хоть поначалу это и неочевидно).
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-06-12T22:54:50+03:00Aldegid73275Меня тоже заинтересовала эта тема.<br/><br/>Запускал почти тот же пример, что и в первом посте, только когда пишу<br/><div class="code"><pre>PyRun_SimpleFile( 0, filename );</pre></div>то получаю<br/><div class="code"><pre> File "d:\Projects\Thin Worlds\Temp\1 Flow Control Statements.py", line 1<br/> \ufffd\ufffd<br/> ^<br/>SyntaxError: invalid character in identifier</pre></div>а когда пишу<br/><div class="code"><pre>PyRun_SimpleFile( file, filename );</pre></div>с открытым file, то получаю краш. <br/><br/>Это все происходит в консольном приложении, созданным из мастера пустым. Использую MSVS 2008. Подскажите, как лечить.<br/><br/>И ещё, меня очень заинтересовало, но я не совсем понял про embedding и extending. Что есть что, что лучше использовать и как это делать?
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-04T16:05:02+03:00Андрей Светлов69710Cython всё таки делает pyd/so и ничего более — так что именно extending. То, что сам Питон можно при этом встроить в другую программу-процесс — ничего в положении вещей не меняет.<br/>К тому же генерируемый *_api.h содержит именно С определения. Если этого достаточно — отлично. Для более или менее большой поделки — неудобно, всё же С++ имеет ряд преимуществ. Но это уже мелочи.
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-04T15:08:12+03:00agalen69703Я как раз имел ввиду, что Cython помогает только делать не только extending, но и embedding. <br/>Конечно, все зависит от задачи, но в некоторых случаях может быть полезен. <br/>Например, сделать сишный интерфейс к питоновским функциям, чтобы обойтись без вызова функций Python C API (кроме Py_Initialize() ).
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-04T10:33:45+03:00Андрей Светлов69688<strong>agalen</strong>, вопрос в лоб: разницу между extending и embedding понимаете?<br/>Или имеете исключительно “теоретическое” знакомство с предметом?
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-04T10:29:49+03:00agalen69686Обратная связь там (в pyrex и Cython) делается с помощью ключевого слова “api”. Пример есть в <a href="http://docs.cython.org/src/userguide/external_C_code.html#c-api-declarations">документации</a>
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-01T17:19:02+03:00Андрей Светлов69559Сначала, не Pyrex а Cython - первый помер.<br/>Второе: Cython предназначен для генерации Python C Extensions. Он делает это хорошо. <br/>Насколько понимаю, требуется обратная задача - embedding Python в С++ код.<br/>Я много работал с обоими случаями, поверьте. Не стоит их путать.
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-01T16:48:16+03:00agalen69558Поддерживаю насчет pyrex - там есть возможность делать модули для python и есть генерация *.h файлов для вызова из С/С++.
Общий :: Python для экспертов :: Использование языка Python в С/С++, простой пример
2011-04-01T12:18:40+03:00truporez69551может имеет смысл посмотреть на связку через Pyrex - <a href="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/">http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/</a>