Поскольку у вас есть код, это невозможно.Вы должны указать типы IDL, эквивалентные тем, которые вы используете в своем приложении, а также обеспечить (вздох, да) функции преобразования между типами, определенными в CORBA IDL, и типами, определенными в вашем приложении.В качестве преимущества вы скрываете свое приложение от будущих изменений в технологии связи (или RPC), поскольку вы используете свои собственные типы.В этом случае, глядя на документацию, тип QWSPointerCalibrationData
имеет два элемента данных:
QPoint devPoints[5]
QPoint screenPoints[5]
Затем вы должны объявить в своей IDL сначала тип QPoint
, а затем QWSPointerCalibrationData
(я добавляюимена с C_
для обозначения типов CORBA):
// IDL
struct C_Point { long x; long y; };
typedef sequence<C_Point> Points;
struct C_WSPointerCalibrationData
{
Points devPoints;
Points screenPoints;
};
Тогда ваш серверный метод должен быть:
CORBA::Boolean Calibrate( C_QWSPointerCalibrationData const& data )
{
QWSPointerCalibrationData qpcd = convert_from_CORBA_QWSPointerCalibrationData(data);
// use qpcd as usual here
}
и , вам нужно написатьconvert_from_CORBA_QWSPointerCalibrationData
функция самостоятельно (и соответствующая, которая преобразует этот тип в аналог CORBA).Для этого преобразования доступны некоторые инструменты, но, к сожалению, это нужно сделать.