如何在Delphi中使用其他语言代码?

时间:2015-06-04 00:46:46

标签: delphi dll pascal chuck

我有兴趣将另一种音频编程语言(ChucK)的语言集成到我的Delphi项目中。我知道动态链接库(.DLLs)也许可能这样,但我对此并不熟悉。

有谁知道如何配置项目以使两种语言协同工作?

2 个答案:

答案 0 :(得分:3)

快速浏览ChucK documentation提示了三种可能的方法,这些方法都是因为ChucK既是一种语言,也是运行用该语言编写的程序的虚拟机(VM)。

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

我找不到任何VM的DLL版本的引用,以便在其他程序中使用。不能说这样的DLL还没有被其他人开发,只是因为我找不到任何一个引用,它似乎不是ChucK本身标准分发的一部分。

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

我之前看到的三个选项是:

  1. 将Chuck VM移植到Delphi。也就是说,将所有ChucK VM源代码翻译成Delphi。这将为您提供完全在Delphi中实现的ChucK版本,该版本能够运行ChucK程序。

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

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

    < / LI>

    这些大致按难度的降序排列。也就是说,Delphi的完整端口(选项1)可能超出了您的能力范围。

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

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

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

    祝你好运。

答案 1 :(得分:0)

让不同系统相互通信的简单方法是使用Open Sound Control(OSC)。 ChucK内置OSC receivers and senders(搜索&#34;&gt; OSC&#34;),Delphi看起来也实现了OSC。

OSC适用于网络,但您也可以将消息发送到您自己的本地计算机(localhost)。上面引用的ChucK示例执行此操作。

这不是一个紧密的整合,但它会让Delphi-ChucK关系继续发展。