Как использовать другой код языка в Delphi?

Я заинтересован в интеграции языка из другого языка звукового программирования ( ChucK) в мой проект Delphi. Я знаю, что, возможно, это возможно с динамическими библиотеками (.DLLs), но я не знаком с этим.

Кто-нибудь знает, как я могу настроить проект для совместной работы двух языков?

2 ответа

Беглый взгляд на документацию ChucK предлагает три возможных подхода, все из которых вытекают из того факта, что ChucK является и языком, и виртуальной машиной (ВМ) для запуска программ, написанных на этом языке.

ChucK является открытым исходным кодом, поэтому полный исходный код этой виртуальной машины доступен, но написан на C++. ChucK доступен либо в этой форме исходного кода, либо в виде готового к запуску исполняемого файла для поддерживаемых платформ.

Я не мог найти ссылку на какую-либо версию DLL виртуальной машины для использования в других программах. Это не означает, что такая DLL не была разработана другими, только то, что я не смог найти какую-либо ссылку на нее, и она не является частью стандартного дистрибутива самого ChucK.

Я нашел некоторый исходный код, который ссылается на DLL в контексте ChucK, но мне было не совсем ясно, был ли это API-интерфейс DLL для использования ChucK или части реализации, позволяющей самому ChucK быть модульным или расширенным с помощью DLL.

Три варианта, которые я вижу перед вами:

  1. Порт Чак В.М. в Дельфы. То есть, переведите весь исходный код виртуальной машины ChucK в Delphi. Это даст вам версию ChucK, полностью реализованную в Delphi, которая способна запускать программы ChucK.

  2. Реализуйте API-интерфейс DLL (возможно, основанный на этой ссылке или начинающийся с этой ссылки) для существующего исходного кода ChucK VM на C++ таким образом, чтобы вы могли запускать программы ChucK, вызывая эту DLL-библиотеку для запуска существующей реализацией C++ ChucK.

  3. Запускайте программы ChucK, используя ChucK exe, используя ShellExecute(), WinExec() или CreateProcess() и т. Д., Так же, как если бы вы хотели запускать любую другую внешнюю программу из программы Delphi.

Они представлены примерно в порядке убывания сложности. То есть полный порт для Delphi (опция 1), вероятно, окажется за пределами ваших возможностей.

Реализация интерфейса DLL вокруг существующего кода C++ (вариант 2) может быть возможной в зависимости от ваших навыков разработки на C++ и Windows.

Вызов внешней программы (опция 3) относительно прост.

Какой подход вам подходит, зависит от характера вашего задания, целей и вашей уверенности / навыков в соответствующих областях.

Удачи.

Простой способ заставить разные системы общаться друг с другом - использовать Open Sound Control (OSC). В ChucK встроены получатели и отправители OSC (ищите "> OSC"), и Delphi, похоже, также реализует OSC.

OSC работает по сетям, но вы также можете просто отправлять сообщения на свой локальный компьютер (localhost). Примеры ChucK, на которые ссылаются выше, делают это.

Это не тесная интеграция, но она положит начало отношениям Delphi-ChucK.

Другие вопросы по тегам