Как собрать распределённое приложение использующие PolyORB/DSA и QtAda

Язык программирования Ada позволяет разрабатывать распределённые приложения без привлечения «сторонних» средств. Одной из известных реализаций поддержки распределённых вычислений является PolyORB с его модулем DSA. Вместе с ним поставляется и специализированная программа для сборки распределённого приложения.

Красиво? Правда каждый желающий использовать пользовательский интерфейс, разработанный на QtAda, в распределённом приложении неминуемо наткнётся на весьма увлекательное диагностическое сообщение компилятора. Но не всё так печально, достаточно найти и «откорректировать» файл qt_core.gpr, расположенный в каталоге lib/gnat внутри точки установки QtAda. В файл необходимо добавить одну строку:

   for Object_Dir use "../../lib/qtada";

После этого однострочного исправления всё будет собираться и работать. Но не факт, что пользователей Microsoft Windows не постигнет участь с ещё более мистической ошибкой при запуске приложения. Секрет достаточно прост: приложение необходимо собирать с динамической версией библиотек времени выполнения, поскольку QtAda выполнена в виде набора динамических библиотек; а по какой‐то причине приложение собирается с использованием статической версии. Для явного использования динамической версии библиотек времени выполнения необходимо добавить в файл проекта следующие строки:

   package Binder is
      for Default_Switches ("Ada") use ("-shared");
   end Binder;

Автор: Вадим Годунко
Дата: 22.10.2010