Интерфейс Python в C ++ Windows Form Application - PullRequest
1 голос
/ 26 июля 2011

Я инженер-механик с некоторыми навыками программирования, и мне нужен совет от гораздо большего числа опытных программистов.Я пишу платформу оптимизации, которая будет включать (по крайней мере в начале) один коммерческий инструмент оптимизации, одну коммерческую программу проектирования и одну мою программу, написанную на C ++.Платформа должна подготовить кейс для инструмента оптимизации, который будет запускать все необходимые программы в правильном порядке.Эта часть с настройкой инструмента оптимизации на моей платформе не является проблемой, потому что у меня было некоторое обучение, и у них очень хорошие инструкции.Кроме того, связь с этой коммерческой программой проектирования довольно проста, потому что она использует интерфейс OLE и имеет большое количество примеров этого.Часть, с которой у меня возникла большая проблема, - это большая гибкость моей программы.Расчеты в основном основаны на эмпирических корреляциях, и я не хочу помещать их в код.Мне нужно вынуть их, чтобы обеспечить легкий доступ в случае новых данных и новых корреляций.Я пишу не только об изменении некоторых коэффициентов, но и об изменении целых уравнений.Например: допустим, что-то описывается уравнением X = A * Y ^ 3 + B * Y ^ 2 + C * Y + D.ABCD - это коэффициенты, а Y - это значение, взятое из объекта в программе, и X, конечно, является решением.Но для этого может быть другая корреляция, которая может учитывать другое значение из объекта из программы.X = A * Y ^ 2 + B * Z ^ 2 + Y / Z.Поэтому мне нужен способ извлечь все корреляции из моего кода, поместить их в отдельные файлы и иметь возможность создавать новые, чтобы они имели доступ к свойствам объекта в моем коде.Я думал об использовании макросов Python (потому что в этой коммерческой программе проектирования это работает хорошо, именно так, как я описал), но чем больше я обращаю на это внимание, тем больше я не знаю, сработает ли это.Я пишу приложение Windows Form и использую VS 2010. Первая проблема заключается в том, что неуправляемая и вся программа управляется.Поэтому я использовал что-то вроде этого:

#pragma unmanaged
#ifdef _DEBUG
#undef _DEBUG
#include <python.h>
#define _DEBUG
#endif
#pragma managed

По крайней мере, программная компиляция, но у меня проблема с преобразованием неуправляемых типов переменных из Pyton в управляемые в C ++.

Итак, мой первый вопрос:

  1. Можно ли использовать Python в качестве инструмента написания макросов в приложении Windows Form, написанном на VS?

  2. Где можно получить дополнительную информацию об этом?Я читаю документы по Python и некоторые учебные пособия в Интернете, но все они есть в консольном приложении Win32.

  3. Может быть, я должен попробовать использовать boost?Это поможет мне?

  4. Есть ли какой-нибудь простой и легкий способ сделать это?(Если бы кто-то показал мне простое приложение формы с одной кнопкой, одним textBox и одним классом с двумя свойствами A и B и макросом на Python (в отдельном файле), который вернул бы X = A + B * 2 в это текстовое поле, он быбудь моим героем:)

  5. Если ответ на первые четыре вопроса отрицательный, по крайней мере, дай мне несколько советов, как я могу сделать это другим способом.Спасибо!

1 Ответ

0 голосов
/ 26 июля 2011
  1. Да
  2. Тип приложения в примерах не должен иметь значения.По большей части привязки Python и поддерживающий код будут одинаковыми, они будут отличаться только тем, как вы вводите код Python, который вы хотите оценить (т.е. файл конфигурации или текстовое поле внутри приложения).Boost имеет модуль Python, который поддерживает написание объектов, которые затем «автоматически» доступны в Python.Конечно, это не так сильно, как писать вручную, но этого должно быть достаточно для того, что вам нужно сделать.Это может быть хорошим местом для начала, см .: http://www.boost.org/doc/libs/1_47_0/libs/python/doc/tutorial/doc/html/index.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...