2015-06-04 3 views
0

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

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

+0

Обычно вы можете найти некоторые обертки, написанные в Delphi некоторыми другими опытными пользователями Delphi. Всегда отправляйте их первым. – Tim3880

+0

Можете ли вы рассказать мне, что такое обертка? Я новичок в этих понятиях – Juanig

+0

Некоторые классы или функции/процедуры, предоставляющие интерфейсы для использования этими DLL в Delphi. – Tim3880

ответ

3

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

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

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

Я нашел some source code which references a DLL in the context of ChucK, но мне было не совсем ясно, был ли это API DLL для использования ChucK или частью реализации, позволяя самому ChucK быть модульным или расширенным через DLL.

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

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

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

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

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

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

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

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

Удачи.

0

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

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

Это не плотная интеграция, но это приведет к отношениям Delphi-ChucK.

Смежные вопросы