2015-06-04 28 views
0

我有兴趣将另一种音频编程语言(ChucK)的语言集成到我的Delphi项目中。我知道也许这对动态链接库(.DLL)是可能的,但我对此并不熟悉。如何在Delphi中使用其他语言代码?

有谁知道我如何配置一个项目来让两种语言一起工作?

+0

通常你可以找到一些其他经验丰富的Delphi用户用Delphi编写的包装器。总是先谷歌他们。 – Tim3880

+0

你能告诉我什么是包装?我是这些概念的新手 – Juanig

+0

某些类或函数/过程为您提供在Delphi中使用这些DLL的接口。 – Tim3880

回答

3

快速浏览一下ChucK documentation提出了三种可能的方法,都是由于ChucK既是语言也是运行用该语言编写的程序的虚拟机(VM)的事实引起的。

ChucK是开源的,所以该VM的完整源代码是可用的,但是用C++编写。 ChucK可以以此源代码形式提供,也可以作为支持平台的可立即运行的可执行文件。

我无法找到在其他程序中使用的虚拟机的任何DLL版本。这并不是说这样一个DLL并没有被其他人开发出来,只是我找不到任何对它的引用,它似乎并不是ChucK本身标准发布的一部分。

我的确发现了some source code which references a DLL in the context of ChucK但我不完全清楚这是一个使用ChucK还是部分实现的DLL API,允许ChucK本身通过DLL进行模块化或扩展。

的三个选项我看你面前:

  1. 港查VM德尔福。也就是说,将所有ChucK VM源代码翻译成Delphi。这会给你一个完全用Delphi实现的ChucK版本,它能够运行ChucK程序。

  2. 为C++中现有的ChucK VM源代码实现一个DLL API(可能基于或从上面的链接开始),使您可以通过调用该DLL来运行ChucK程序,以便由现有的C++运行实施ChucK。

  3. 运行使用ShellExecute(),WinExec()或CreateProcess()等ChucK exe程序的ChucK程序,就像您希望从Delphi程序运行任何其他外部程序一样。

这些大致以降序排列呈现。也就是说,德尔福(选择1)的完整端口可能超出您的能力。

根据您的C++和Windows开发技能,可能会在现有的C++代码(选项2)周围实现DLL接口。

调用外部程序(选项3)相对比较简单。

哪种方法适合您取决于您​​的任务性质,目标以及您所涉及领域的信心/技能。

祝你好运。

0

使用开放式声音控制(OSC),一种简单的方法可以让不同的系统相互通话。 ChucK有OSC receivers and senders(搜索“> OSC”),Delphi看起来像它也实现了OSC。

OSC适用于网络,但您也可以将消息发送到您自己的本地计算机(本地主机)。上面引用的ChucK例子是这样做的。

这不是一个紧密的集成,但它会得到Delphi-ChucK关系。