我有兴趣将另一种音频编程语言(ChucK)的语言集成到我的Delphi项目中。我知道动态链接库(.DLLs)也许可能这样,但我对此并不熟悉。
有谁知道如何配置项目以使两种语言协同工作?
答案 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进行模块化或扩展。
我之前看到的三个选项是:
将Chuck VM移植到Delphi。也就是说,将所有ChucK VM源代码翻译成Delphi。这将为您提供完全在Delphi中实现的ChucK版本,该版本能够运行ChucK程序。
为C ++中的现有ChucK VM源代码实现DLL API(可能基于或从上面的链接开始),使您能够通过调用该DLL运行ChucK程序来运行ChucK程序ChucK的C ++实现。
使用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关系继续发展。